如果我有一个像这样的对象数组,我很久以来一直试图弄清楚这一点:
var my_array = [
Object {Project: A, Hours: 2},
Object {Project: B, Hours: 3},
Object {Project: C, Hours: 5},
Object {Project: A, Hours: 6},
Object {Project: C, Hours: 9}
]
我想将所有具有相同键的对象合并到一个对象中,以使它们的时间加起来:
预期产量:
my_array = [
Object {Project: A, Hours: 8}
Object {Project: B, Hours: 3}
Object {Project: C, Hours: 14}
]
我该如何解决这个问题?以这种方式格式化数据花了我很长时间,这是最后一步!
我的尝试是,我遍历数组,不确定如何处理对象的合并:
for (var i =0; i<my_array.length; i++) {
my_array[i].Project // access the object project key
my_array[i].Hours // need to increment hours
}
在尝试中,您错过了创建新数组的机会
var newArray = [];
var uniqueprojects = {};
for (var i =0; i<my_array.length; i++) {
if ( !uniqueproject[my_array[i].Project] )
{
uniqueproject[my_array[i].Project] = 0;
}
uniqueproject[my_array[i].Project] += my_array[i].Hours;
//my_array[i].Project // access the object project key
//my_array[i].Hours // need to increment hours
}
现在从uniqueproject地图创建最终的输出数组
newArray = Object.keys(uniqueproject).map(function(key){return {Project:key, Hours:uniqueproject[key]}});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句