如何在javascript中检查两个数字是不是相等[重复]
Posted
技术标签:
【中文标题】如何在javascript中检查两个数字是不是相等[重复]【英文标题】: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 Afilter
也迭代并运行比较。您需要更具体地说明问题。
检查这个:***.com/a/38206980/2050306
【参考方案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));
【讨论】:
以上是关于如何在javascript中检查两个数字是不是相等[重复]的主要内容,如果未能解决你的问题,请参考以下文章
python - 如何在python中使用IF语句检查两个列表的元素是不是相等?