首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算数组中的重复数并返回true (认知复杂度)

计算数组中的重复数并返回true (认知复杂度)
EN

Stack Overflow用户
提问于 2021-04-04 02:43:36
回答 2查看 27关注 0票数 0

我需要检查一个数字在数组中是否至少重复三次。我如何重构它来降低Lint一直抱怨的认知复杂性。

下面是我的代码:

代码语言:javascript
复制
let array11 = [1, 3, 2, 3, 5, 6, 7, 8, 9, 0, 1]; 

function checkDuplicateNumber (array11) {
     for (let i = 0; i < array11.length; i += 1) {
        let sameNumberLoop = 0;
        for (let i2 = i; i2 < array11.length; i2 += 1) {
          if (array11[i] === array11[i2]) {
            sameNumberLoop += 1;
            if (sameNumberLoop >= 3) {
              return true;
            }
          }
        }
      }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-04 02:45:55

不是多次迭代,而是只迭代一次,同时计算对象或Map中出现的次数:

代码语言:javascript
复制
let array11 = [1, 3, 2, 3, 5, 6, 7, 8, 9, 0, 1]; 

function checkDuplicateNumber (array) {
  const counts = {};
  for (const num of array) {
    counts[num] = (counts[num] || 0) + 1;
    if (counts[num] === 3) return true;
  }
  return false;
};

console.log(checkDuplicateNumber(array11));
console.log(checkDuplicateNumber([3, 1, 3, 5, 3]));

票数 1
EN

Stack Overflow用户

发布于 2021-04-04 02:54:01

代码语言:javascript
复制
let array11 = [1, 3, 2, 3, 5, 6, 7, 8, 9, 0, 1]
let array22 = [1, 3, 2, 3, 5, 6, 7, 1, 9, 0, 1]

function checkDuplicateNumber(arr) {
  const map = new Map()
  return arr.some((v) => (map.has(v) ? (++map.get(v).count === 3) : (map.set(v, { count: 1 }), false)))
}

console.log(checkDuplicateNumber(array11))
console.log(checkDuplicateNumber(array22))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66934705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档