如何检查JavaScript中两个数字是否相等

时间:2019-03-05 22:11:23

标签: javascript node.js

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

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

我想到的是forEach并比较每个数字,但这并不是很理想。过滤器?也许。任何人都有最佳的理想想法?

4 个答案:

答案 0 :(得分:0)

您可以使用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]);
}

答案 1 :(得分:0)

您可以使用过滤器

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));

答案 2 :(得分:-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))

答案 3 :(得分:-1)

使用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>