Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript合并对象中属于不同键的数组值_Javascript_Arrays_Lodash - Fatal编程技术网

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)