【问题标题】:How to check if two numbers are equal in javascript [duplicate]如何在javascript中检查两个数字是否相等[重复]
【发布时间】:2019-07-27 11:40:48
【问题描述】:

假设我们有一个数组: let arr = [10,10,5,11,5]

如何检查所有相等的数字? (基本上是重复的)

我想到的是一个 forEach 并比较每个数字,但这不是很理想。过滤器?可能是。任何人都有任何最佳的好主意吗?

【问题讨论】:

  • “所有数字都相等”是什么意思?你想要数组中的唯一数字吗?您想知道它们是否相等?还是……?
  • 你想要的输出是什么?没有任何重复元素的数组?
  • 我不确定是谁对所有答案投了反对票,但这很荒谬:问题陈述不够充分——如果有什么问题应该反对的话。
  • @ChrisD A filter 也迭代并运行比较。您需要更具体地说明问题。

标签: javascript node.js


【解决方案1】:

您可以使用Set 删除重复项,然后比较两个数组的长度。

let arr1 = [10,10,5,11,5]
let arr2 = [10,11,5]

function hasDuplicates(arr) {
  return arr.length != [...new Set(arr)].length
}

console.log(hasDuplicates(arr1))
console.log(hasDuplicates(arr2))

【讨论】:

    【解决方案2】:

    every 真的很快

    let arr = [10,10,5,11,5]
    //arr = [10,10,10,10]
    if (arr.every( v => v === arr[0] )) {
      console.log("yes")
    } else {
      console.log("no")
    }

    或使用Lodash

    let arr = [10,10,5,11,5]
    //arr = [10,10,10,10]
    if (_.uniq(arr).length == 1) {
      console.log("yes")
    } else {
      console.log("no")
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

    【讨论】:

      【解决方案3】:

      您可以使用reduce 来建立您需要的值

      let arr = [10, 10, 5, 11, 5];
      
      let duplicates = getDuplicates(arr);
      
      console.log(duplicates);
      
      function getDuplicates(arr) {
        let duplicates = arr.reduce((acc, item) => {
          if(acc[item] !== undefined) {
            acc[item] = true;
          } else {
            acc[item] = false;
          }
          return acc;
        }, {});
        
        return Object.keys(duplicates).filter(item => duplicates[item]);
      }

      【讨论】:

        【解决方案4】:

        你可以使用过滤器

        let arr = [10,10,5,11,5];
        
        const duplicates = array => array.filter((item, index) => array.some((i, idx) => i === item && idx < index));
        
        console.log(duplicates(arr));

        或减少

        let arr = [10,10,5,11,5];
        
        const duplicates = array => array.reduce((results, item, index) => {
          if (!results.some(i => i === item) && array.some((i, idx) => i === item && index !== idx)) {
            results.push(item);
          }
          return results;
        }, []);
        
        console.log(duplicates(arr));

        【讨论】:

          猜你喜欢
          • 2013-10-07
          • 2011-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-30
          • 1970-01-01
          • 1970-01-01
          • 2012-03-26
          相关资源
          最近更新 更多