gpt4 book ai didi

javascript - 数组列表 : find item by array key, 根据需要创建或更新

转载 作者:行者123 更新时间:2023-11-30 08:04:01 25 4
gpt4 key购买 nike

我有这样的数组列表:

var a = [
{ month: 'January', count: 3 },
{ month: 'February', count: 5 },
{ month: 'March', count: 4 }
];
var b = [
{ month: 'January', count: 4 },
{ month: 'February', count: 5 },
{ month: 'March', count: 1 }
];

我想使用下划线创建一个“总”列表,如下所示:

var totals = [
{ month: 'January', count: 7 },
{ month: 'February', count: 10 },
{ month: 'March', count: 5 }
];

我事先不知道“月”的值是多少,所以我需要考虑到这一点。

这是我目前所知的,但不是很优雅。有更好的方法吗?

var totals = [];
_.each([a, b], function(d) {
_.each(items, function(e) {
var matchingItem = _.filter(totals, function(item, i) {
return (item.month === e.month);
});
if (matchingItem) {
var i = totals.indexOf(matchingItem);
totals[i].count += e.count;
} else {
var newItem = e;
totals.push(e);
}

});
};

最佳答案

使用 Underscore 函数,你可以这样做,使用一个临时对象:

var total = [];
var tmp = {};

_.each(_.flatten([a,b]), function (obj) {
tmp[obj.month] = tmp[obj.month] ? tmp[obj.month] + obj.count : obj.count;
});
_.each(tmp, function (c,m) {
total.push({month: m, count: c});
});

查看那里的代码:http://jsfiddle.net/8cxQB/

关于javascript - 数组列表 : find item by array key, 根据需要创建或更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21167409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com