结构大概是
{
'item1':{
'list':{
'a':{
{
'name':'xxx',
'num':1.
},
{
'name':'xxx',
'num':1.
}
}
'b':{
{
'name':'xxx',
'num':1.
}
}
}
}
'item2':{
'list':{
'w':{
{
'name':'xxx',
'num':1.
}
}
's':{
{
'name':'xxx',
'num':1.
},
{
'name':'xxx',
'num':1.
}
}
}
}
'item3':{
'list':{
'a':{
{
'name':'xxx',
'num':1.
}
}
'e':{
{
'name':'xxx',
'num':1.
}
}
}
}
}
数量都不固定,想要把里面的{name,num}全部提取出来做成新的数组,怎么快速实现?
1
qianlige 2023-12-26 11:46:11 +08:00
Object.keys()
|
2
jianchang512 2023-12-26 11:47:06 +08:00 via Android
这种问题难道不是 chatGPT 最擅长的吗
|
3
Rache1 2023-12-26 11:48:20 +08:00 1
const v = Object.values(data)
.map(v => Object.values(v).map(v => Object.values(v))) .flat(3); console.log(v); |
4
asche910 2023-12-26 11:49:21 +08:00 1
// 合并后的数组
let result = []; // 遍历原始数据 for (const key in data) { const innerLists = Object.values(data[key].list); // 使用 concat 将多个数组合并为一个 result = result.concat(...innerLists); } console.log(result); |
5
Mistyrainjn 2023-12-26 11:50:34 +08:00
const data = {
'item1': { 'list': { 'a': [ { 'name': 'xxx', 'num': 1 }, { 'name': 'xxx', 'num': 1 } ], 'b': [ { 'name': 'xxx', 'num': 1 } ] } }, 'item2': { 'list': { 'w': [ { 'name': 'xxx', 'num': 1 } ], 's': [ { 'name': 'xxx', 'num': 1 }, { 'name': 'xxx', 'num': 1 } ] } }, 'item3': { 'list': { 'a': [ { 'name': 'xxx', 'num': 1 } ], 'e': [ { 'name': 'xxx', 'num': 1 } ] } } }; // 合并所有{name, num}到一个新数组 const mergedArray = Object.values(data).reduce((result, item) => { Object.values(item.list).forEach(subList => { subList.forEach(obj => { result.push({ name: obj.name, num: obj.num }); }); }); return result; }, []); console.log(mergedArray); |