我有这个结构:
[
[
{
"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});
})
})
干得好:
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
})
})
你真的很亲密,你只是:
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);