Найти и добавить дополнительный ключ в объект массива, используя lodash? - PullRequest
0 голосов
/ 25 мая 2018

Я хочу найти и добавить дополнительный ключ в объект массива, используя lodash .Я не хочу делать цикл for и поддерживать временные данные.

"book": [
  {
    "name": "Hulk",
    "series": [
      {
        "name": "mike",
        "id": "100",
      },
      {
        "name": "steve",
        "id": "200"
      }
    ]
  }
],

Необходимо добавить detail объект в массив series на основе поиска name: mike && id:100 и вернуть полный bookданные.

{
  "name": "mike",
  "id": "100",
  "detail":{
    "author": 'apple'
    "year": 1956
  }
},

1 Ответ

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

как это?(примечание: это изменяет существующий объект)

const list = [
  {
    "name": "Hulk",
    "series": [
      {
        "name": "mike",
        "id": "100",
      },
      {
        "name": "steve",
        "id": "200"
      }
    ]
  }
];

function addDetail(books, search, detail){
  books.forEach(book => {
    var entry = book.series.find( item => {
      return item.name === search.name && item.id === search.id;
    });
    if(entry){
      entry.detail=detail;
    }
  })
  return books;
}

console.log(addDetail(list, {"name": "mike","id": "100"}, { "author": 'apple', "year": 1956}))
.as-console-wrapper { max-height: 100% !important; top: 0; }

Вы можете заменить синтаксис стрелки обычным синтаксисом функции и использовать lodash для forEach и find для повышения совместимости со старыми версиями браузера.

...