Javascript合并对象中属于不同键的数组值
我有一个这样的物体:Javascript合并对象中属于不同键的数组值,javascript,arrays,lodash,Javascript,Arrays,Lodash,我有一个这样的物体: data = { 0: [{name: 'ABC', age: '43'}, {name: 'DEF', age: '20'}], 1: [{name: 'GHI', age: '41'}, {name: 'JKL', age: '25'}], 2: [{name: 'MNO', age: '19'}, {name: 'PQR', age: '24'}] }; [ {name: 'ABC', age: '43'}, {name: 'DEF', ag
data = {
0: [{name: 'ABC', age: '43'}, {name: 'DEF', age: '20'}],
1: [{name: 'GHI', age: '41'}, {name: 'JKL', age: '25'}],
2: [{name: 'MNO', age: '19'}, {name: 'PQR', age: '24'}]
};
[ {name: 'ABC', age: '43'}, {name: 'DEF', age: '20'}, {name: 'GHI', age: '41'}, {name: 'JKL', age: '25'}, {name: 'MNO', age: '19'}, {name: 'PQR', age: '24'} ]
我希望合并键的数组值,并生成一个对象数组,如下所示:
data = {
0: [{name: 'ABC', age: '43'}, {name: 'DEF', age: '20'}],
1: [{name: 'GHI', age: '41'}, {name: 'JKL', age: '25'}],
2: [{name: 'MNO', age: '19'}, {name: 'PQR', age: '24'}]
};
[ {name: 'ABC', age: '43'}, {name: 'DEF', age: '20'}, {name: 'GHI', age: '41'}, {name: 'JKL', age: '25'}, {name: 'MNO', age: '19'}, {name: 'PQR', age: '24'} ]
我翻遍了洛达斯找了些东西,但找不到正确的组合。是否有人知道如何以简洁的方式,使用Lodash(最好)或其他东西来实现这一点?提前谢谢 没有lodash,只有普通的老JS:
var data = {
0: [{name: 'ABC', age: '43'}, {name: 'DEF', age: '20'}],
1: [{name: 'GHI', age: '41'}, {name: 'JKL', age: '25'}],
2: [{name: 'MNO', age: '19'}, {name: 'PQR', age: '24'}]
};
var result = [];
for (var key in data) {
if (data.hasOwnProperty(key)) {
result = result.concat(data[key]);
}
}
console.log(result);
没有lodash,只有普通的旧JS:
var data = {
0: [{name: 'ABC', age: '43'}, {name: 'DEF', age: '20'}],
1: [{name: 'GHI', age: '41'}, {name: 'JKL', age: '25'}],
2: [{name: 'MNO', age: '19'}, {name: 'PQR', age: '24'}]
};
var result = [];
for (var key in data) {
if (data.hasOwnProperty(key)) {
result = result.concat(data[key]);
}
}
console.log(result);
使用
\uuu0.values()
提取数组,并将concat应用于数组:
var数据={
0:[{name:'ABC',age:'43'},{name:'DEF',age:'20'}],
1:[{姓名:'GHI',年龄:'41'},{姓名:'JKL',年龄:'25'}],
2:[{姓名:'MNO',年龄:'19'},{姓名:'PQR',年龄:'24'}]
};
var result=Array.prototype.concat.apply([],[u.values(数据));
控制台日志(结果)代码>
使用..values()
提取数组,并将concat应用于数组:
var数据={
0:[{name:'ABC',age:'43'},{name:'DEF',age:'20'}],
1:[{姓名:'GHI',年龄:'41'},{姓名:'JKL',年龄:'25'}],
2:[{姓名:'MNO',年龄:'19'},{姓名:'PQR',年龄:'24'}]
};
var result=Array.prototype.concat.apply([],[u.values(数据));
控制台日志(结果)代码>
您只需将类似数组的对象转换为数组
,然后将其展平
数据={
0:[{name:'ABC',age:'43'},{name:'DEF',age:'20'}],
1:[{姓名:'GHI',年龄:'41'},{姓名:'JKL',年龄:'25'}],
2:[{姓名:'MNO',年龄:'19'},{姓名:'PQR',年龄:'24'}]
};
console.log(
_.flant(u.toArray(数据))
)
您只需将类似数组的对象转换为数组
,然后将其展平
数据={
0:[{name:'ABC',age:'43'},{name:'DEF',age:'20'}],
1:[{姓名:'GHI',年龄:'41'},{姓名:'JKL',年龄:'25'}],
2:[{姓名:'MNO',年龄:'19'},{姓名:'PQR',年龄:'24'}]
};
console.log(
_.flant(u.toArray(数据))
)
使用新的Object.values()
您可以在纯JS ES6中执行以下操作:
var data={0:[{name:'ABC',age:'43'},{name:'DEF',age:'20'}],
1:[{姓名:'GHI',年龄:'41'},{姓名:'JKL',年龄:'25'}],
2:[{姓名:'MNO',年龄:'19'},{姓名:'PQR',年龄:'24'}]
},
newData=[].concat(…Object.values(数据));
console.log(newData)使用新的Object.values()
编码,您可以在纯JS ES6中执行以下操作:
var data={0:[{name:'ABC',age:'43'},{name:'DEF',age:'20'}],
1:[{姓名:'GHI',年龄:'41'},{姓名:'JKL',年龄:'25'}],
2:[{姓名:'MNO',年龄:'19'},{姓名:'PQR',年龄:'24'}]
},
newData=[].concat(…Object.values(数据));
console.log(newData)代码>这里是另一个纯javascript版本
var数据={
0:[{name:'ABC',age:'43'},{name:'DEF',age:'20'}],
1:[{姓名:'GHI',年龄:'41'},{姓名:'JKL',年龄:'25'}],
2:[{姓名:'MNO',年龄:'19'},{姓名:'PQR',年龄:'24'}]
};
var newdata=Object.keys(data).reduce(函数(a,b){
返回a.concat(数据[b]);
}, []);
console.log(newdata)代码>这里是另一个纯javascript版本
var数据={
0:[{name:'ABC',age:'43'},{name:'DEF',age:'20'}],
1:[{姓名:'GHI',年龄:'41'},{姓名:'JKL',年龄:'25'}],
2:[{姓名:'MNO',年龄:'19'},{姓名:'PQR',年龄:'24'}]
};
var newdata=Object.keys(data).reduce(函数(a,b){
返回a.concat(数据[b]);
}, []);
console.log(newdata)代码>