提问人:gadss 提问时间:11/13/2023 最后编辑:The Alphagadss 更新时间:11/13/2023 访问量:84
如何在javascript中重新分组数组?
How to re-group an array in javascript?
问:
我的javascript中有这组数组。
var array = [
['Jack', 'A'],
['Jack', 'A'],
['Sara', 'A'],
['Jack', 'B'],
['Peter', 'B'],
['Sara', 'C'],
['Sara', 'B'],
['Sara', 'A'],
['Sara', 'B'],
['Peter', 'B'],
['Peter', 'A'],
['Peter', 'C']
];
我的目标是像这样排列成一个数组。
Jack: A : 2
Jack: B : 1
Sara: A : 2
Sara: B : 2
Sara: C : 1
Peter: A : 1
Peter: B : 2
Peter: C : 1
我正在尝试像这样编码它,但我无法正确处理
let counts = {};
array.forEach(element => {
counts[element] = (counts[element] || 0) + 1;
});
有人对此有想法吗? 谢谢。。
答:
1赞
The Alpha
11/13/2023
#1
我想你想要这样的东西:
let array = [
['Jack', 'A'],
['Jack', 'A'],
['Sara', 'A'],
['Jack', 'B'],
['Peter', 'B'],
['Sara', 'C'],
['Sara', 'B'],
['Sara', 'A'],
['Sara', 'B'],
['Peter', 'B'],
['Peter', 'A'],
['Peter', 'C']
];
function transformArray(arr)
{
let result = {};
arr.forEach(function(item) {
let name = item[0];
let category = item[1];
if (!result[name]) {
result[name] = {};
}
if (!result[name][category]) {
result[name][category] = 1;
} else {
result[name][category]++;
}
});
return result;
}
console.log(transformArray(array));
1赞
Nina Scholz
11/13/2023
#2
您可以按这两个值进行分组并映射计数。
const
data = [['Jack', 'A'], ['Jack', 'A'], ['Sara', 'A'], ['Jack', 'B'], ['Peter', 'B'], ['Sara', 'C'], ['Sara', 'B'], ['Sara', 'A'], ['Sara', 'B'], ['Peter', 'B'], ['Peter', 'A'], ['Peter', 'C']],
result = Object
.values(Object.groupBy(data, a => a.join('|')))
.map(a => [...a[0], a.length]);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0赞
dreamer
12/4/2023
#3
要实现数组之间的等价性并计算每个等价类的出现次数,可以使用 @ut8pia/分类器库。value-based
只需将您的数据添加到:Classifier
import { Classifier } from "@ut8pia/classifier/queue/Classifier.js";
const
classifier = new Classifier()
.letAll(data);
assert.equal(classifier.n(['Jack', 'A']), 2)
该方法计算每个项的出现次数。
此外,您的数据本质上是排序的(请参阅在线文档以获取说明)。n(item)
该库超越了对象之间的传统等价性。它适应和等效,在其框架内提供更广泛的功能。例如,虽然枚举每个等价类在等价方案中可能不是特别有用,但它在等价中变得至关重要。value-based
comparator-based
representation-based
value-based
representation-based
评论