помещать элементы каждого объекта внутри каждого объекта внутри другого массива

#javascript

#javascript

Вопрос:

У меня есть два массива, один из которых называется моим оригинальным data , который состоит из :

 const datas = [
  {
    name: 'core Test',
    item: [
      {
        name: 'test/core/core.js',
        item: "item1"
      }
    ]
  },
  {
    name: 'users Test',
    item: [
      {
        name: 'test/users/user.js',
        item: "item2"
      }
    ]
  }
]
  

И у меня есть другой массив с именем replace , который я пытаюсь поместить каждый из его элементов внутрь моего исходного, внутри

 const replace = [
  {
    type: "test1",
    number: "1",
  },
  {
    type: "test2",
    number: "2",
  }
]
  

Вот мой код :

 const transformedData = datas.map(data => {
  data.item = data.item.map(x => ({
    name: x.name,
    type: replace.map(y=>{return y;})
  }))
  return data
})
  

Результат, который я получаю :

 [
  {
    "name": "core Test",
    "item": [
      {
        "name": "test/core/core.js",
        "type": [
          { "type": "test1", "number": "1" },
          { "type": "test2", "number": "2" }
        ]
      }
    ]
  },
  {
    "name": "users Test",
    "item": [
      {
        "name": "test/users/user.js",
        "type": [
          { "type": "test1", "number": "1" },
          { "type": "test2", "number": "2" }
        ]
      }
    ]
  }
]
  

Результат, который я хочу :

 [
  {
    "name": "core Test",
    "item": [
      {
        "name": "test/core/core.js",
        "type": { "type": "test1", "number": "1" }
      }
    ]
  },
  {
    "name": "users Test",
    "item": [
      {
        "name": "test/users/user.js",
        "type": { "type": "test2", "number": "2" }
      }
    ]
  }
]
  

Ответ №1:

Это потому, что вы отображаете весь путь через массив replace каждый раз, когда вы находитесь внутри значения внутри данных. Вместо этого вы хотите отслеживать индекс с помощью вашей исходной карты, чтобы каждый раз у вас был только один экземпляр.

Попробуйте что-то вроде:

 const transformedData = datas.map((data, index) => {
  data.item = data.item.map(x => ({
    name: x.name,
    type: replace[index]
  }))
  return data;
});