Javascript добавить новое поле со значением для конкретного объекта в массиве - PullRequest
1 голос
/ 03 мая 2019

У меня есть массив объектов из json, подобный этому

{  
   "images":[  
      {  
         "childFolder":[  
            {  
               "name":"Trước",
               "_id":"5ccbc1e4af2be32acd1da1dd"
            },
            {  
               "name":"Sau",
               "_id":"5ccbc1e4af2be32acd1da1dc"
            },
            {  
               "name":"X-Quang",
               "_id":"5ccbc1e4af2be32acd1da1db"
            }
         ]
      }
   ]
}

Я хочу добавить полевой тест со значением yes, например, так

"test": "yes"

Для объекта с "name" = "Sau" с использованием javascript

Как я могу это сделать?Любая помощь будет оценена :)

Ответы [ 2 ]

2 голосов
/ 03 мая 2019

Вы можете использовать Array.forEach , чтобы перебрать массив, а затем проверить имя «Sau» и обновить объект.

let obj = {"images":[{"childFolder":[{"name":"Trước","_id":"5ccbc1e4af2be32acd1da1dd"},{"name":"Sau","_id":"5ccbc1e4af2be32acd1da1dc"},{"name":"X-Quang","_id":"5ccbc1e4af2be32acd1da1db"}]}]};

obj.images.forEach(img => img.childFolder.forEach(v => {
  if(v.name === "Sau") v.test = "yes";
}));

console.log(obj);
1 голос
/ 06 мая 2019

Если вы не хотите зацикливать весь массив, используйте find(). Это даст вам лучшую производительность.

const obj = yourObject

obj.images
   .find(image => image.childFolder)
   .childFolder
   .find(person => person.name == 'Sau')
   .test = "yes"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...