【发布时间】:2020-07-03 20:26:20
【问题描述】:
我问自己是否有办法解决计算重复数字的问题,只需迭代一次并使用reduce 方法。
这是我得到的:
const countDuplicate = (numbers) => {
const occurrencies = {};
for (var k = 0; k < numbers.length; k++) {
occurrencies[numbers[k]] = isNaN(occurrencies[numbers[k]])
? 1
: occurrencies[numbers[k]] + 1;
}
const counter = Object.values(occurrencies).reduce(
(total, each) => total + (each > 1 ? 1 : 0),
0
);
return counter;
};
countDuplicate([1,2,3,4]); // returns 0
countDuplicate([1,2,3,4,1,2,2]); // returns 2
【问题讨论】:
-
x.length - (new Set(x)).size -
你正在迭代
numbers一次。你的代码没有问题。 (好吧,你可以在那个循环中处理counter,但它的可读性会降低) -
虽然我使用
occurrencies作为辅助数据结构,但我正在迭代numbers一次
标签: javascript node.js iteration