Как добавить новый ключ и значение в массив в JavaScript? - PullRequest
1 голос
/ 25 марта 2019

У меня есть два массива. Предположим, у нас есть значение ниже массива: "

var array1 = [
{Id: "809cd136-02c7-4cc8-b9de-04fd3359b265", Name: "testing"},
{Id: "609d3a78-8f7c-4843-acdb-2dcfc73c0d96", Name: "Delhi"},
{Id: "264d54cb-b104-48ed-91db-673327ae8d0e", Name: "rohit-auditor"},
{Id: "ce9691b3-dc55-4d30-baf4-7987c2b49b3e", Name: "test"},
{Id: "284e9e98-8ed7-4fb7-b09f-5d1f2a668b15", Name: "aman"}
] 

и второй массив:

var array2 = ["809cd136-02c7-4cc8-b9de-04fd3359b265", "609d3a78-8f7c-4843-acdb-2dcfc73c0d96"]

Теперь я хочу добавить одно новое значение ключа вarray1 только в тех объектах, чье значение равно массиву 1. Другими словами, они хотят сопоставить оба массива и хотят добавить «status = true» в те, которые имеют равные значения.

новый ключ хочет добавитьis:

{status: true}

Теперь мой новый массив должен быть:

[
{Id: "809cd136-02c7-4cc8-b9de-04fd3359b265", Name: "testing", status: true},
{Id: "609d3a78-8f7c-4843-acdb-2dcfc73c0d96", Name: "Delhi", status: true},
{Id: "264d54cb-b104-48ed-91db-673327ae8d0e", Name: "rohit-auditor"},
{Id: "ce9691b3-dc55-4d30-baf4-7987c2b49b3e", Name: "test"},
{Id: "284e9e98-8ed7-4fb7-b09f-5d1f2a668b15", Name: "aman"}

]

Надеюсь, вы понимаете.

Заранее спасибо,

Ответы [ 4 ]

3 голосов
/ 25 марта 2019

Вы можете использовать forEach и find следующим образом:

let array1=[{Id:"809cd136-02c7-4cc8-b9de-04fd3359b265",Name:"testing"},{Id:"609d3a78-8f7c-4843-acdb-2dcfc73c0d96",Name:"Delhi"},{Id:"264d54cb-b104-48ed-91db-673327ae8d0e",Name:"rohit-auditor"},{Id:"ce9691b3-dc55-4d30-baf4-7987c2b49b3e",Name:"test"},{Id:"284e9e98-8ed7-4fb7-b09f-5d1f2a668b15",Name:"aman"}],
    array2=["809cd136-02c7-4cc8-b9de-04fd3359b265","609d3a78-8f7c-4843-acdb-2dcfc73c0d96"]
    
array2.forEach(id => {
  let found = array1.find(a => a.Id === id);
  if(found)
    found.status = true
})

console.log(array1)

Проверка if предназначена для проверки того, существует ли Id в array2 в array1. Если каждый Id в array2 существует в array1, вы можете просто изменить его на:

array1.find(a => a.Id === id).status = true
1 голос
/ 25 марта 2019

Вы можете использовать метод Array#map для итерации и создания нового массива, а затем использовать метод Array#includes для проверки значения, присутствующего в массиве2.Где использовать Синтаксис расширения ES6 для объединения обоих объектов.

var newArray = array1.map(o => array2.includes(o.Id) ? {...o,  ...add} : { ...add })

var array1 = [{
    Id: "809cd136-02c7-4cc8-b9de-04fd3359b265",
    Name: "testing"
  },
  {
    Id: "609d3a78-8f7c-4843-acdb-2dcfc`Array#forEach`73c0d96",
    Name: "Delhi"
  },
  {
    Id: "264d54cb-b104-48ed-91db-673327ae8d0e",
    Name: "rohit-auditor"
  },
  {
    Id: "ce9691b3-dc55-4d30-baf4-7987c2b49b3e",
    Name: "test"
  },
  {
    Id: "284e9e98-8ed7-4fb7-b09f-5d1f2a668b15",
    Name: "aman"
  }
]
var array2 = ["809cd136-02c7-4cc8-b9de-04fd3359b265", "609d3a78-8f7c-4843-acdb-2dcfc73c0d96"]

var add = {
  status: true
};

var newArray = array1.map(o => array2.includes(o.Id) ? {...o,  ...add} : { ...add })

console.log(newArray);


Если вы хотите обновить исходный массив, просто выполните итерации по массиву, используя метод Array#forEach, и добавьте дополнительное свойство, используя Object.assign при необходимости.
array1.forEach(o => array2.includes(o.Id) && Object.assign(o,add))

var array1 = [{
    Id: "809cd136-02c7-4cc8-b9de-04fd3359b265",
    Name: "testing"
  },
  {
    Id: "609d3a78-8f7c-4843-acdb-2dcfc73c0d96",
    Name: "Delhi"
  },
  {
    Id: "264d54cb-b104-48ed-91db-673327ae8d0e",
    Name: "rohit-auditor"
  },
  {
    Id: "ce9691b3-dc55-4d30-baf4-7987c2b49b3e",
    Name: "test"
  },
  {
    Id: "284e9e98-8ed7-4fb7-b09f-5d1f2a668b15",
    Name: "aman"
  }
]
var array2 = ["809cd136-02c7-4cc8-b9de-04fd3359b265", "609d3a78-8f7c-4843-acdb-2dcfc73c0d96"]

var add = {
  status: true
};

array1.forEach(o => array2.includes(o.Id) && Object.assign(o, add))

console.log(array1);
0 голосов
/ 25 марта 2019

Вы должны сравнить элемент second array с id's of element of first array и добавить ключ (status) к найденным совпадениям.

var array1 = [{Id: "809cd136-02c7-4cc8-b9de-04fd3359b265",Name: "testing"},{Id: "609d3a78-8f7c-4843-acdb-2dcfc73c0d96", Name: "Delhi"},{Id: "264d54cb-b104-48ed-91db-673327ae8d0e", Name: "rohit-auditor"},{Id: "ce9691b3-dc55-4d30-baf4-7987c2b49b3e", Name: "test"},{Id: "284e9e98-8ed7-4fb7-b09f-5d1f2a668b15", Name: "aman"}]; 
var array2 = ["809cd136-02c7-4cc8-b9de-04fd3359b265", "609d3a78-8f7c-4843-acdb-2dcfc73c0d96"];

array2.forEach(function(secondElem) {
   let matchingElemInFirstArr = array1.find(el=>el.Id==secondElem);
   matchingElemInFirstArr ['status']=true;
 });

console.log(array1);
0 голосов
/ 25 марта 2019

Простого map & indexOf будет достаточно

var array1 = [
    {Id: "809cd136-02c7-4cc8-b9de-04fd3359b265", Name: "testing"},
    {Id: "609d3a78-8f7c-4843-acdb-2dcfc73c0d96", Name: "Delhi"},
    {Id: "264d54cb-b104-48ed-91db-673327ae8d0e", Name: "rohit-auditor"},
    {Id: "ce9691b3-dc55-4d30-baf4-7987c2b49b3e", Name: "test"},
    {Id: "284e9e98-8ed7-4fb7-b09f-5d1f2a668b15", Name: "aman"}
    ] 

    var array2 = ["809cd136-02c7-4cc8-b9de-04fd3359b265", "609d3a78-8f7c-4843-acdb-2dcfc73c0d96"]


    var result=array1.map(el=>{

        if(array2.indexOf(el.Id)>-1){
        el.status=true
      }
      return el
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...