как сравнить ключ в массиве объекта и изменить его с помощью javascript

#javascript #jquery #arrays #object

#javascript #jquery #массивы #объект

Вопрос:

У меня есть два объекта obj1 и obj2, как перебирать ключ массива children , и если кодовое имя совпадает, затем добавьте ключ имени в объект obj2, получите объект.

Как выполнить цикл по объекту объектов и сопоставить ключ и нажать клавишу, чтобы получить новый объект в javascript

 function newObject(obj1, obj2) {
  var result = obj1.map(e => {
    if ('children' in e)
      e.children = e.children.map(child => {
        if ('children' in child)
          child.children = child.children.map(c => {
            name: c.name
          });
        return child;
      });
    return e;
  })
  return result
}

var obj1 = [{
  "id": 1,
  "item": "node1",
  "children": [{
      "id": 2,
      "code": "countries",
      "title": "Country",
      "children": [{
          "cid": 12,
          "code": "S1",
          "name": "SG",
          "children": [{
            "id": 4,
            "code": "C1",
            "name": "City"
          }]
        },
        {
          "cid": 13,
          "code": "S2",
          "name": "TH"
        }
      ]
    },
    {
      "id": 2,
      "code": "Groceries",
      "title": "Grocery",
      "children": [{
          "cid": 11,
          "code": "G1",
          "name": "Fruits"
        },
        {
          "cid": 10,
          "code": "G2",
          "name": "Vegetables"
        }
      ]
    }, {
      "id": 3,
      "code": "lists",
      "title": "Option"
    }
  ]
}];

var obj2 = [{
    id: 1,
    code: "G1",
    status: "active"
  },
  {
    id: 2,
    code: "S2",
    status: "inactive"
  },
  {
    id: 3,
    code: "C1",
    status: "active"
  }
];

console.log(this.newObject(obj1, obj2));  

Ожидаемый результат

 [
  {id:1, name: "Fruits",code:"G1", status:"active"},
  {id:2, name: "TH",code:"S2", status:"inactive"},
  {id:3, name: "city",code:"C1", status:"active"}
]

  

Комментарии:

1. Я сделал вам фрагмент и исправил ваш объект.

2. @mplungjan спасибо за ответ, но мой ожидаемый результат отличается,

3. Я не исправил вашу ПРОБЛЕМУ, только исправил ваш НЕДОПУСТИМЫЙ ОБЪЕКТ

4. проверьте мой stackblitz

Ответ №1:

вы можете проверить этот код, я исправил ваш объект, и вы можете найти свое ожидание в консоли

Комментарии:

1. Ответы только по ссылке не приветствуются. Хороший ответ стоит сам по себе и является не просто кодом, он также объясняет, как он устранил проблему.

2. Обескураженный @jon-p !! Я думаю, ему нужна помощь, а не история, чтобы ничего не сказать 🙂