gpt4 book ai didi

javascript - jquery数组按多个元素分组并查找总数

转载 作者:行者123 更新时间:2023-11-30 20:43:18 24 4
gpt4 key购买 nike

我有一个这样的数组:

abcArr = [["A", "dog", 10], ["B", "cat", 20], ["A", "dog", 30],["C", "pig", 40]] ["A", "cat", 30],  ["B", "cat", 20], ["A", "horse", 10];

我正在查看这篇文章 ( jquery array group by ),我需要类似的东西来解决我的问题,但我需要根据 2 个元素对我的数组进行分组。

所以我的回答应该是这样的:

[["A", "dog", 40], ["B", "cat", 40], ["C", "pig", 40]] ["A", "cat", 30], ["A", "horse", 10];

我尝试了@jfriend00 的.each() 方法来对一个字段进行分组并且它有效,但我不知道如何调整它以使用两个字段来对上面的数据进行分组。

abcArr = [["A", 10],["B", 20],["A", 30],["C", 40]];
var items = {},
base, key;
$.each(abcArr, function(index, val) {
key = val[0];
if (!items[key]) {
items[key] = 0;
}
items[key] += val[1];
});
var outputArr = [];
$.each(items, function(key, val) {
outputArr.push([key, val]);
});

console.log(outputArr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

谢谢。

最佳答案

您可以做的是,您可以组合多个键,而不是将一个字段用作您的 items 对象的键,如下所示:

注意 - jQuery 不是解决这个问题所必需的,因为 JavaScript 有方便的 .reduce().map()内置功能。<​​/p>

var abcArr = [["A", "dog", 10], ["B", "cat", 20], ["A", "dog", 30],["C", "pig", 40], ["A", "cat", 30],  ["B", "cat", 20], ["A", "horse", 10]];

// group the items by letter-animal and sum the results
var items = abcArr.reduce(function (results, current) {
var letter = current[0];
var animal = current[1];
var value = current[2];

// combine the two fields as the key to match on.. this is where the magic happens
var key = letter + "-" + animal;
if (!results[key]) {
results[key] = 0;
}
results[key] += value;
return results;
}, {});

// break the keys out from the hyphenated form back into individual array elements w/ value
var outputArr = Object.keys(items).map(function (key) {
var splitKey = key.split("-");
var letter = splitKey[0];
var animal = splitKey[1];
var itemValue = items[key];

return [letter, animal, itemValue];
});

console.log(outputArr);

或者使用 ES6 语法:

var abcArr = [["A", "dog", 10], ["B", "cat", 20], ["A", "dog", 30],["C", "pig", 40], ["A", "cat", 30],  ["B", "cat", 20], ["A", "horse", 10]];

var items = abcArr.reduce((results, [letter, animal, value]) => {
var key = letter + "-" + animal;
if (!results[key]) {
results[key] = 0;
}
results[key] += value;
return results;
}, {});

var outputArr = Object.keys(items).map(key => [...key.split("-"), items[key]]);

console.log(outputArr);

关于javascript - jquery数组按多个元素分组并查找总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49017589/

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