javascript - 打印前 2 个不重复的数字 javascript

标签 javascript arrays object

我在 JavaScript 测试中遇到了这个问题,其中我需要打印前 2 个不重复的数字,这是我的部分尝试。

var list = [5, 23, 23, 5, 66, 3, 23, 7, 3, 0];


var locObj = {};
var count = 1;

for(var i =0; i< list.length; i++){
  if(!(list[i] in locObj))
  locObj[list[i]] = 1;
  else
    locObj[list[i]] = count++;
}

console.log(locObj);//has an object with value as 1 if its non duplicate and the number of occurrences in the case of duplicate values.

我可以进一步循环 locObj 并确定哪个值等于 1,然后打印 2 个值。但由于 javascript 键没有排序,我无法打印预期的 66 和 7。怎么解决呢?也感谢任何其他更好的方法来解决问题。

最佳答案

我会使用 Map,其迭代方法(此处为 entries() )按插入顺序进行迭代。与您正在做的类似,对 Map 进行计数,然后获取 Map 的条目,按计数为 1 的条目进行过滤,然后切片以获取前两个:

var list = [5, 23, 23, 5, 66, 3, 23, 7, 3, 0];
const countByNum = new Map();
list.forEach((num) => {
  countByNum.set(num, (countByNum.get(num) || 0) + 1);
});
const firstTwoNonDupes = [...countByNum.entries()]
  .filter(([, count]) => count === 1)
  .slice(0, 2)
  .map(([num]) => num);
console.log(firstTwoNonDupes);

关于javascript - 打印前 2 个不重复的数字 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57133559/

相关文章:

c - 如何将 long long int 的数字放入 long long int 数组

JavaScript - 特殊的多重继承

javascript - 淡出图像并替换为另外 5 个等等?

javascript - 在 Highcharts 中过滤数据

c - 从函数返回二维数组

javascript - Nodejs 从数组表达流

javascript - CSV 格式到带有运行总计的对象数组

c++ - 尝试删除对象时检测到堆损坏 (C++)

javascript - 搜索时不弹出模态功能,且 "close"功能未关闭

javascript - 无法选择网格中的六边形