我需要检查一个JavaScript数组,看看是否有任何重复的值。最简单的方法是什么?我只需要找到复制的值是什么——实际上我不需要它们的索引,也不需要它们复制了多少次。

我知道我可以循环遍历数组并检查所有其他值是否匹配,但似乎应该有更简单的方法。

类似的问题:

获取JavaScript数组中所有唯一的值(删除重复值)


当前回答

Const名称= [ “亚历克斯”, “马特”, 12日, “你”, “我”, 12, “颂歌”, “自行车”, “颂歌”, ]; Const count = (names) => 的名字。Reduce ((a, b) =>({…A, [b]: (A [b] || 0) + 1}), {}); 让obj = count(names); let objectKeys = Object.keys(obj); let repetitiveElements = []; let answer = objectKeys.map((value) => { 如果(obj[value] > 1) { 返回repetitiveElements.push(价值); } }); console.log (repetitiveElements);

其他回答

你可以使用排序、筛选和集合来做到这一点。

Var数= [1,2,3,4,5,6,7,8,1,2,3,4,5,3,4]; var numbersSorted = numbers.sort(); 令result = numbers。Filter ((e, i) => numbers[i] == numbers[i+1]); 结果=[…]新设置(结果)]; console.log(结果);

var a = ["a","a","b","c","c"];

a.filter(function(value,index,self){ return (self.indexOf(value) !== index )})
var a= [1, 2,2,3,3,4,4,4];
var m=[];
var n = [];
a.forEach(function(e) {
  if(m.indexOf(e)=== -1) {
    m.push(e);
}else if(n.indexOf(e)=== -1){
    n.push(e);
}

});

如果你想消除重复,试试这个好方法:

函数eliminateduplicate (arr) { var我, Len = arrr .length, Out = [], Obj = {}; For (i = 0;I < len;我+ +){ Obj [arr[i]] = 0; } 对于(i in obj) { out.push(我); } 返回; } console.log (eliminateDuplicates([1、6、7、3、6、8、1,3,4,5,1、7、2、6]))

来源: http://dreaminginjavascript.wordpress.com/2008/08/22/eliminating-duplicates/

最快的解决方法是用一面旗子

Var值= [4,2,3,1,4] / /解决方案 const checkDuplicate = list => { var hasDuplicate = false; list.sort()。排序((a, b) => { if (a == b) hasDuplicate = true }) 返回hasDuplicate } console.log (checkDuplicate(值))