我有这个结构:
[
[
{
"title": "something",
"dataKey": "cod"
},
{
"title": "something_2",
"dataKey": "des"
},
{
"title": "something_3",
"dataKey": "orc"
},
{
"title": "something_4",
"dataKey": "orca"
},
{
"title": "something_5",
"dataKey": "arr"
},
{
"title": "something_6",
"dataKey": "por"
}
],
[
{
"title": "VALUE_1",
"dataKey": "cod"
},
{
"title": "VALUE_2",
"dataKey": "des"
},
{
"title": "VALUE_3",
"dataKey": "orc"
},
{
"title": "VALUE_4",
"dataKey": "orca"
},
{
"title": "VALUE_5",
"dataKey": "arr"
},
{
"title": "VALUE_6",
"dataKey": "por"
}
]
]
有必要对此结构进行转换,使其如下所示:
[
[
{ "cod": "something" },
{ "des": "something_2" },
{ "orc": "something_3" },
{ "orca": "something_4" },
{ "arr": "something_5" },
{ "por": "something_6" }
],
[
{ "cod": "VALUE" },
{ "des": "VALUE_2" },
{ "orc": "VALUE_3" },
{ "orca": "VALUE_4" },
{ "arr": "VALUE_5" },
{ "por": "VALUE_6" }
]
]
我创建了这个简单的重复结构来完成这个转换。但是,通过执行测试,我有时可以逐行打印,或者返回[[object Object]]。我希望你能帮我理解如何做到这一点。我已经做了很多研究,但我无法理解
var newData = temp1.map((item, i) => {
temp1[i].map((subItem, j) => {
({[subItem.dataKey]: subItem.title});
})
})
答案 0 :(得分:2)
你走了:
let data = [
[
{
title: 'something',
dataKey: 'cod',
},
{
title: 'something_2',
dataKey: 'des',
},
{
title: 'something_3',
dataKey: 'orc',
},
{
title: 'something_4',
dataKey: 'orca',
},
{
title: 'something_5',
dataKey: 'arr',
},
{
title: 'something_6',
dataKey: 'por',
},
],
[
{
title: 'VALUE_1',
dataKey: 'cod',
},
{
title: 'VALUE_2',
dataKey: 'des',
},
{
title: 'VALUE_3',
dataKey: 'orc',
},
{
title: 'VALUE_4',
dataKey: 'orca',
},
{
title: 'VALUE_5',
dataKey: 'arr',
},
{
title: 'VALUE_6',
dataKey: 'por',
},
],
];
console.log(
data.map(x => {
return x.map(y => {
let obj = {};
obj[y.dataKey] = y.title;
return obj;
});
})
);
修改强>
在你发布的代码中,你只是错过了回报。
请参阅:
console.log(
temp1.map((item, i) => {
return temp1[i].map((subItem, j) => { // return here
return ({[subItem.dataKey]: subItem.title}); // return here
})
})
答案 1 :(得分:1)
你真的很亲近,你只是:
忘记返回内部map
的结果(在下面,我通过使用简洁的箭头函数而不是详细的函数[具有函数的函数]来实现身体[你用过的]和
当已经 temp1[i]
item
无需const newData = temp1.map(item =>
item.map(subItem => ({[subItem.dataKey]: subItem.title}))
);
醇>
所以:
const newData = temp1.map(item => {
return item.map(subItem => ({[subItem.dataKey]: subItem.title}))
//^^^^^^
});
或使用详细箭头功能代替:
const temp1 = [
[
{
"title": "something",
"dataKey": "cod"
},
{
"title": "something_2",
"dataKey": "des"
},
{
"title": "something_3",
"dataKey": "orc"
},
{
"title": "something_4",
"dataKey": "orca"
},
{
"title": "something_5",
"dataKey": "arr"
},
{
"title": "something_6",
"dataKey": "por"
}
],
[
{
"title": "VALUE_1",
"dataKey": "cod"
},
{
"title": "VALUE_2",
"dataKey": "des"
},
{
"title": "VALUE_3",
"dataKey": "orc"
},
{
"title": "VALUE_4",
"dataKey": "orca"
},
{
"title": "VALUE_5",
"dataKey": "arr"
},
{
"title": "VALUE_6",
"dataKey": "por"
}
]
];
const newData = temp1.map(item =>
item.map(subItem => ({[subItem.dataKey]: subItem.title}))
);
console.log(newData);
直播示例:
{{1}}