📅  最后修改于: 2023-12-03 15:41:39.275000             🧑  作者: Mango
在 JavaScript 中,我们经常需要计算数组中每个元素的数量。这在很多情况下都是很有用的,比如统计词频、计算各种商品的销售额等等。
我们可以使用 for 循环遍历整个数组,然后用一个对象来存储每个元素出现的次数。具体实现代码如下:
function countElements(arr) {
const counts = {};
for (let i = 0; i < arr.length; i++) {
if (counts[arr[i]] === undefined) {
counts[arr[i]] = 1;
} else {
counts[arr[i]]++;
}
}
return counts;
}
const arr = [1, 2, 3, 2, 1, 2, 3, 4, 5];
console.log(countElements(arr)); // 输出 {1: 2, 2: 3, 3: 2, 4: 1, 5: 1}
除了使用 for 循环外,我们还可以使用 reduce 方法来实现。代码如下:
function countElements(arr) {
return arr.reduce((counts, num) => {
counts[num] = (counts[num] || 0) + 1;
return counts;
}, {});
}
const arr = [1, 2, 3, 2, 1, 2, 3, 4, 5];
console.log(countElements(arr)); // 输出 {1: 2, 2: 3, 3: 2, 4: 1, 5: 1}
除了对象外,我们还可以使用 Map 数据结构来存储每个元素出现的次数。代码如下:
function countElements(arr) {
const counts = new Map();
for (let i = 0; i < arr.length; i++) {
const num = arr[i];
counts.set(num, (counts.get(num) || 0) + 1);
}
return counts;
}
const arr = [1, 2, 3, 2, 1, 2, 3, 4, 5];
console.log(countElements(arr)); // 输出 Map(5) {1 => 2, 2 => 3, 3 => 2, 4 => 1, 5 => 1}
以上就是三种计算数组中每个元素的数量的方法。对于小型数组来说,使用哪种方法都无所谓;但对于大型数组,使用 reduce 或 Map 可能会更加高效。在实际应用中,我们可以根据具体情况选择合适的方法。