是否有一种简单的方法来对对象方法求和。
var obj = {
a: {
aa: 12,
bb: 4
},
b: {
aa: 5,
bb: 100
},
c: {
aa: 1,
bb: 150
}
}
我需要将所有'aa'和'bb'加在一起。 应该像
var res = {
aa: 18,
bb: 254
}
答案 0 :(得分:2)
使用_.reduce
_.reduce(obj, function(total, element) {
total.aa = total.aa + element.aa;
total.bb = total.bb + element.bb;
return total;
}, { aa: 0, bb: 0})
答案 1 :(得分:1)
试试这个
var obj = {
a: {
aa: 12,
bb: 4
},
b: {
aa: 5,
bb: 100
},
c: {
aa: 1,
bb: 150
}
};
var result = _.chain(obj)
.values()
.reduce(function (c, p) {
return _.mapObject(c, function (value, key) {
return p[key] + value;
});
})
.value();
console.log(result);

<script src="//jashkenas.github.io/underscore/underscore-min.js"></script>
&#13;
答案 2 :(得分:1)
有几种方法可以做到: 使用两个循环:
var obj = {
a: {
aa: 12,
bb: 4
},
b: {
aa: 5,
bb: 100
},
c: {
aa: 1,
bb: 150
}
};
var result = {};
_.each(obj, function(chd) {
_.each(chd, function(val, key) {
result[key] = (result[key] || 0) + val;
} );
} );
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
答案 3 :(得分:0)
_.reduce(obj, function(total, element) {
return {
aa: total.aa + element.aa,
bb: total.bb + element.bb
};
}, { aa: 0, bb: 0});
答案 4 :(得分:-1)
这是一个解决方案:
var res = _.reduce(obj, function(sum, o) {
sum.aa += o.aa;
sum.bb += o.bb;
return sum;
});