#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;
});