javascript обновляет значение свойства, если оно не истинно внутри массива объектов - PullRequest
0 голосов
/ 14 мая 2018

Дан следующий объект:

const kids = {
    name: 'john',
    extra: {
        city: 'London',
        hobbies: [
            {
                id: 'football',
                team: 'ABC',
                joined: true
            },
            {
                id: 'basketball',
                team: 'DEF',
                joined: false
            },
            {
                id: 'volleyball',
                team: 'DEF',
                joined: null
            },
        ],
    },
};

Я хочу обновить поле joined в каждом объекте массива хобби и установить для него значение null, если не true;

вопрос в том, как я могу сделать это, используя карту и найти? и обновите текущую переменную, а не создавайте новую.

Ответы [ 6 ]

0 голосов
/ 14 мая 2018

Можете ли вы попробовать это?

$(document).ready(function() {
        $(kids.extra.hobbies).each(function(){
            if(this.joined !== true){
                this.joined = null;
                alert(this.joined)
            }
        });
    });
0 голосов
/ 14 мая 2018

Используйте карту массива и проверьте, является ли значение ложным, затем установите его на ноль, карта вернет новый массив. Затем установите для него значение kids.extra.hobbies

const kids = {
  name: 'john',
  extra: {
    city: 'London',
    hobbies: [{
        id: 'football',
        team: 'ABC',
        joined: true
      },
      {
        id: 'basketball',
        team: 'DEF',
        joined: false
      },
      {
        id: 'volleyball',
        team: 'DEF',
        joined: null
      },
    ],
  },
};
var x = kids.extra.hobbies.map(function(item) {
  if (item.joined === false) {
    item.joined = null;
    return item
  } else {
    return item;
  }

})
kids.extra.hobbies = x;
console.log(kids)
0 голосов
/ 14 мая 2018

Вы можете использовать Array.prototype.forEach () .

Код:

const kids = {name: 'john',extra: {city: 'London',hobbies: [{id: 'football',team: 'ABC',joined: true},{id: 'basketball',team: 'DEF',joined: false},{id: 'volleyball',team: 'DEF',joined: null},]}};
kids.extra.hobbies.forEach(hobby => hobby.joined = hobby.joined || null);

console.log(kids.extra.hobbies);
0 голосов
/ 14 мая 2018

Ниже фрагмент кода покажет вам, как это сделать.Просто переберите массив и поместите оператор if.

const kids = {
    name: 'john',
    extra: {
        city: 'London',
        hobbies: [
            {
                id: 'football',
                team: 'ABC',
                joined: true
            },
            {
                id: 'basketball',
                team: 'DEF',
                joined: false
            },
            {
                id: 'volleyball',
                team: 'DEF',
                joined: null
            },
        ],
    },
};
for(var i=0;i<kids.extra.hobbies.length;i++){
  var data = kids.extra.hobbies[i];
  if(data.joined !== true){
    data.joined = null;
  }
}
console.log(kids)
0 голосов
/ 14 мая 2018

Перебрать массив хобби и установить значения по умолчанию для объединенного поля как ноль:

const kids = {
    name: 'john',
    extra: {
        city: 'London',
        hobbies: [
            {
                id: 'football',
                team: 'ABC',
                joined: true
            },
            {
                id: 'basketball',
                team: 'DEF',
                joined: false
            },
            {
                id: 'volleyball',
                team: 'DEF',
                joined: null
            },
        ],
    },
};

kids.extra.hobbies.forEach(h => h.joined = h.joined || null);

console.log(kids);
0 голосов
/ 14 мая 2018

Вы можете использовать Array#forEach для этого.find - это перебор, а map на самом деле не требуется, поскольку вы ничего не возвращаете с итерации.

const kids = {
  name: 'john',
  extra: {
    city: 'London',
    hobbies: [{
        id: 'football',
        team: 'ABC',
        joined: true
      },
      {
        id: 'basketball',
        team: 'DEF',
        joined: false
      },
      {
        id: 'volleyball',
        team: 'DEF',
        joined: null
      },
    ],
  },
};

kids.extra.hobbies.forEach(item => {
  if (item.joined !== true) {
    item.joined = null
  }
})

console.log(kids);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...