按相等值对数组进行分组 JavaScript
javascriptweb developmentobject oriented programming更新于 2025/10/10 2:20:17
假设我们有一个字符串/数字文字数组,其中包含一些重复值,例如 −
const array = ['day', 'night', 'afternoon', 'night', 'noon', 'night', 'noon', 'day', 'afternoon', 'day', 'night'];
我们需要编写一个函数 groupSimilar(),该函数接收此数组并返回一个新数组,其中所有重复条目都分组在一个子数组中作为第一个元素,原始数组中的总数作为第二个元素。
因此,对于此示例,输出应为 −
[ [ 'day', 3 ], [ 'night', 4 ], [ 'afternoon', 2 ], [ 'noon', 2 ] ]
让我们为该函数编写代码。我们将使用 Array.prototype.map() 函数构造一个新的必需数组,并使用 Map 来跟踪数组中的重复条目 −
示例
const array = ['day', 'night', 'afternoon', 'night', 'noon', 'night',
'noon', 'day', 'afternoon', 'day', 'night'];
const groupSimilar = arr => {
return arr.reduce((acc, val) => {
const { data, map } = acc;
const ind = map.get(val);
if(map.has(val)){
data[ind][1]++;
} else {
map.set(val, data.push([val, 1])-1);
}
return { data, map };
}, {
data: [],
map: new Map()
}).data;
};
console.log(groupSimilar(array));
输出
控制台中的输出将是 −
[ [ 'day', 3 ], [ 'night', 4 ], [ 'afternoon', 2 ], [ 'noon', 2 ] ]
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

