You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS技术实现:如何统计二维数组中列的唯一元素数量?

问题:如何改写代码统计二维数组列的唯一元素数量

现有一段用于统计二维数组行唯一元素数量的JavaScript代码,如何修改它来统计列的唯一元素数量?例如目标数组的第一列(索引0)唯一元素为E、F、B,数量是3。

原代码如下:

let arr = [["E", "D", "E", "E", "C"],
           ["E", "A", "C", "E", "C"],
           ["F", "B", "C", "D", "G"],
           ["B", "C", "G", "G", "F"],
           ["E", "C", "E", "B", "C"]];

for (let i = 0; i < arr.length; i++) {
  
  // 统计行的唯一元素数量
  let uniqueElements = arr[i].filter((elem, index) => arr[i].indexOf(elem) === index).length;

  // (i = 0) uniqueElements = 3 ( E, D, C ) 
  // (i = 1) uniqueElements = 3 ( E, A, C )
  // (i = 2) uniqueElements = 5 ( F, B, C, D, G )
  // (i = 3) uniqueElements = 4 ( B, C, G, F )
  // (i = 4) uniqueElements = 3 ( E, C, B )
}
解决方案

要统计列的唯一元素,关键是先把每一列的元素单独提取出来,再用类似原代码的逻辑统计唯一值数量。具体实现如下:

修改思路

  1. 确定数组的列数:因为原数组是矩形结构,直接取第一行的长度arr[0].length即可。
  2. 遍历每一列的索引,对每个索引,提取该列的所有元素。
  3. 用原代码的过滤逻辑(或更高效的Set方式)统计该列的唯一元素数量。

修改后的代码(沿用原逻辑)

let arr = [["E", "D", "E", "E", "C"],
           ["E", "A", "C", "E", "C"],
           ["F", "B", "C", "D", "G"],
           ["B", "C", "G", "G", "F"],
           ["E", "C", "E", "B", "C"]];

// 获取总列数(假设所有行长度一致)
const columnCount = arr[0].length;

for (let col = 0; col < columnCount; col++) {
  // 提取当前列的所有元素
  const columnElements = arr.map(row => row[col]);
  
  // 用原代码的过滤逻辑统计唯一元素数量
  let uniqueCount = columnElements.filter((elem, index) => columnElements.indexOf(elem) === index).length;
  
  // 打印结果
  console.log(`列 ${col} 的唯一元素数量:${uniqueCount}`);
  // 对应结果:列0→3,列1→4,列2→3,列3→4,列4→4
}

更高效的实现方式(使用Set)

如果数组规模较大,用Set统计唯一值的性能更优,代码也更简洁:

let arr = [["E", "D", "E", "E", "C"],
           ["E", "A", "C", "E", "C"],
           ["F", "B", "C", "D", "G"],
           ["B", "C", "G", "G", "F"],
           ["E", "C", "E", "B", "C"]];

const columnCount = arr[0].length;

for (let col = 0; col < columnCount; col++) {
  const columnElements = arr.map(row => row[col]);
  // 利用Set自动去重的特性,直接获取size即为唯一元素数量
  let uniqueCount = new Set(columnElements).size;
  
  console.log(`列 ${col} 的唯一元素数量:${uniqueCount}`);
}

内容的提问来源于stack exchange,提问作者Paski7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:55:13