JavaScript中如何将数组相同元素分组为子数组?
JavaScript 数组按元素分组并格式化输出
实现思路
先遍历原数组将相同元素归类到同一数组,再根据需求转换为指定格式输出。
代码实现
基础分组(得到数组集合)
const originalArray = ['a', 'b', 'c', 'a', 'a', 'c']; // 分组处理 const grouped = originalArray.reduce((acc, item) => { acc[item] = acc[item] || []; acc[item].push(item); return acc; }, {}); // 提取分组后的数组 const resultArrays = Object.values(grouped); console.log(resultArrays); // 输出:[ ['a','a','a'], ['b'], ['c','c'] ]
格式化为指定字符串
如果需要输出Array(3):(a,a,a)、Array(1):(b)、Array(2):(c,c)这种格式,可继续处理:
const formattedStr = resultArrays.map(arr => `Array(${arr.length}):(${arr.join(',')})`).join('、'); console.log(formattedStr); // 输出:"Array(3):(a,a,a)、Array(1):(b)、Array(2):(c,c)"
代码说明
reduce遍历原数组,构建以元素为键、对应分组数组为值的对象,完成相同元素的归类。Object.values从分组对象中提取所有数组值,得到最终的分组数组集合。- 最后通过
map格式化每个数组为指定字符串,再用join拼接成最终结果。
内容的提问来源于stack exchange,提问作者Julian PIL
相关产品推荐
相关产品推荐

