javascript将对象数组的数组和在一起
我有一个数组,格式如下javascript将对象数组的数组和在一起,javascript,Javascript,我有一个数组,格式如下 [ [{year:2015, value:23000, value1:1000},{year:2016,value:1000, value1:2000},{year:2017,value:400, value1:3000}], [{year:2015, value:10000, value1:1000},{year:2016,value:2000, value1:3000},{year:2017,value:500, value1:2000}], ] 我想把它们加起来,
[
[{year:2015, value:23000, value1:1000},{year:2016,value:1000, value1:2000},{year:2017,value:400, value1:3000}],
[{year:2015, value:10000, value1:1000},{year:2016,value:2000, value1:3000},{year:2017,value:500, value1:2000}],
]
我想把它们加起来,在这个例子中,我想
[{year:2015,value:33000, value1:2000},{year:2016,value:3000, value1:5000},{year:2017,value:900, value1:5000}]
如果阵列中只有两个阵列,但较大的阵列中可能有更多阵列。我怎样才能做到这一点?目前,我还不能想出一个好的方法。谢谢您可以在地图/对象中循环项目并在年数(键)中添加值
var data = [
[{year:2015, value:23000},{year:2016,value:1000},{year:2017,value:400}],
[{year:2015, value:10000},{year:2016,value:2000},{year:2017,value:500}],
];
var output = {};
data.forEach(function(item) {
item.forEach(function(obj) {
output[obj.year] = (output[obj.year] || 0) + obj.value;
});
});
output = [output]
console.log(output);
一种方法是首先展平此二维阵列
var output = {};
var flatArray = data.reduce(function(a, b) {
return a.concat(b);
}, []);
flatArray.forEach(function(obj) {
output[obj.year] = (output[obj.year] || 0) + obj.value;
});
output = [output]
console.log(output);
输出:[{
2015: 33000,
2016: 3000,
2017: 900
}]
您可以在项目上循环,并在地图/对象中的年号(键)上添加值
var data = [
[{year:2015, value:23000},{year:2016,value:1000},{year:2017,value:400}],
[{year:2015, value:10000},{year:2016,value:2000},{year:2017,value:500}],
];
var output = {};
data.forEach(function(item) {
item.forEach(function(obj) {
output[obj.year] = (output[obj.year] || 0) + obj.value;
});
});
output = [output]
console.log(output);
一种方法是首先展平此二维阵列
var output = {};
var flatArray = data.reduce(function(a, b) {
return a.concat(b);
}, []);
flatArray.forEach(function(obj) {
output[obj.year] = (output[obj.year] || 0) + obj.value;
});
output = [output]
console.log(output);
输出:[{
2015: 33000,
2016: 3000,
2017: 900
}]
ECMAScript 5解决方案:
var-arr=[
[{年份:2015年,价值:23000,价值1:1000},{年份:2016年,价值:1000,价值1:2000},{年份:2017年,价值:400,价值1:3000}],
[{年份:2015,价值:10000,价值1:1000},{年份:2016,价值:2000,价值1:3000},{年份:2017,价值:500,价值1:2000}]
],
//每年的总价值`
年份=arr.reduce(功能(r,a){
a、 forEach(函数(o){
y=o年;
if(Array.isArray(r[y])){
r[y][0]+=o.值;
r[y][1]+=o.value1;
}否则{
r[y]=[o.value,o.value1];
}
});
返回r;
}, {}),
//构建结果数组,其中包含总计为'year'的对象
结果=对象。键(年)。映射(函数(y){
返回{year:y,value:years[y][0],value1:years[y][1]};
});
控制台日志(结果)代码>ECMAScript 5解决方案:
var-arr=[
[{年份:2015年,价值:23000,价值1:1000},{年份:2016年,价值:1000,价值1:2000},{年份:2017年,价值:400,价值1:3000}],
[{年份:2015,价值:10000,价值1:1000},{年份:2016,价值:2000,价值1:3000},{年份:2017,价值:500,价值1:2000}]
],
//每年的总价值`
年份=arr.reduce(功能(r,a){
a、 forEach(函数(o){
y=o年;
if(Array.isArray(r[y])){
r[y][0]+=o.值;
r[y][1]+=o.value1;
}否则{
r[y]=[o.value,o.value1];
}
});
返回r;
}, {}),
//构建结果数组,其中包含总计为'year'的对象
结果=对象。键(年)。映射(函数(y){
返回{year:y,value:years[y][0],value1:years[y][1]};
});
控制台日志(结果)代码>这里有一个有效的解决方案。这会满足你的需求。希望有帮助
var-arr=[
[{年份:2015年,价值:23000,价值1:1000},{年份:2016年,价值:1000,价值1:2000},{年份:2017年,价值:400,价值1:3000}],
[{年份:2015年,价值:10000,价值1:1000},{年份:2016年,价值:2000,价值1:3000},{年份:2017年,价值:500,价值1:2000}],
]
var结果=[];
对于(var i=0;i 控制台日志(结果)代码>这里有一个有效的解决方案。这会满足你的需求。希望有帮助
var-arr=[
[{年份:2015年,价值:23000,价值1:1000},{年份:2016年,价值:1000,价值1:2000},{年份:2017年,价值:400,价值1:3000}],
[{年份:2015年,价值:10000,价值1:1000},{年份:2016年,价值:2000,价值1:3000},{年份:2017年,价值:500,价值1:2000}],
]
var结果=[];
对于(var i=0;i 控制台日志(结果)代码>您可以使用哈希表来收集单个年份,并使用嵌套方法来迭代给定对象的所有属性
然后创建新属性并添加实际值
它可以处理任意数量的属性
var数据=[{年份:2015,值:23000,值1:1000},{年份:2016,值:1000,值1:2000},{年份:2017,值:400,值1:3000}],{年份:2015,值:10000,值1:1000},{年份:2016,值:2000,值1:3000},{年份:2017,值:500,值1:2000}],
结果=数据.reduce(函数(散列){
返回函数(r,a){
a、 forEach(函数(o){
如果(!哈希[o.year]){
hash[o.year]={year:o.year};
r、 推送(哈希[o.year]);
}
Object.keys(o).forEach(函数(k){
如果(k!=‘年’){
散列[o.year][k]=(散列[o.year][k]| | 0)+o[k];
}
});
});
返回r;
};
}(Object.create(null)),[]);
控制台日志(结果)代码>
。作为控制台包装器{max height:100%!important;top:0;}
您可以使用哈希表收集一年,并使用嵌套方法对数组迭代给定对象的所有属性
然后创建新属性并添加实际值
它可以处理任意数量的属性
var数据=[{年份:2015,值:23000,值1:1000},{年份:2016,值:1000,值1:2000},{年份:2017,值:400,值1:3000}],{年份:2015,值:10000,值1:1000},{年份:2016,值:2000,值1:3000},{年份:2017,值:500,值1:2000}],
结果=数据.reduce(函数(散列){
返回函数(r,a){
a、 forEach(函数(o){
如果(!哈希[o.year]){