Есть ли какой-нибудь метод lodash для обновления объекта внутри массива, где у сопоставляемого элемента будет новый ключ? - PullRequest
0 голосов
/ 24 января 2019

Я добавляю опции-флажки и должен обновлять свой объект только новым ключом

, поэтому, если я сниму отметку с элемента в списке, я хочу обновить объект

[ { id: 1 }, { id: 2 } ]

послеснят:

[ { id: 1 }, { id: 2, unChecked: false } ]

любой метод для переключения этого состояния?заранее спасибо

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Вы можете сделать это без lodash и используя метод .map, добавив свойство unChecked, если id не находится в массиве checked с помощью .includes().

См. Работупример ниже:

const checked = [2, 3], /* array holding all checked values */
arr = [{id: 1}, {id: 2}],
res = arr.map(({id}) => checked.includes(id) ? {id, unChecked: false} : {id});

console.log(res);
0 голосов
/ 24 января 2019

Вы можете сделать это, используя нативный JavaScript и метод массива map. В функции проверьте, соответствует ли id, затем добавьте туда ключ

let obj = [{
  id: 1
}, {
  id: 2
}]


function updateObj(obj, objId, key) {
  return obj.map((item) => {
    if (item.id === objId) {
      return {
        id: item.id,
        [key]: false
      }

    } else {
      return {
        id: item.id
      }
    }
  })
}

console.log(updateObj(obj, 2, 'unchecked'))
...