在Javascript中,我如何检查一个数组是否有重复的值?

157

可能是重复问题:
查找JavaScript数组中重复值的最简单方法

如何检查一个数组是否有重复值?

如果数组中有相同元素,则返回true。否则,返回false。

['hello','goodbye','hey'] //return false because no duplicates exist
['hello','goodbye','hello'] // return true because duplicates exist

请注意,我不关心查找重复项,只想知道数组是否包含重复项的布尔结果。


这里是:https://dev59.com/eXRA5IYBdhLWcg3wvgsb#840808 - Ofer Zelig
2
我不想要一个去重后的列表。我只想知道一个列表中是否有重复项,返回真或假。 - user847495
9
这个问题不是重复的。因为 @user847495 只是想检查是否存在重复项,所以解决方案比查找所有重复项所需的时间/步骤更快/更容易。例如,你可以使用这个链接:http://codr.io/v/bvzxhqm - alden
2
使用 underscore ,简单的技巧 var test=['hello','goodbye','hello'] ; if ( test.length != _.unique(test).length ) { // some code } - Sai Ram
4
不是标记问题的重复。请在标记前注意一下。 - John Weisz
显示剩余3条评论
12个回答

0
2023年,这是对一系列对象进行严格相等性检查的最佳方法。一个Set无法做到这一点。
const answerTableRows = [
    { rk: "u", pk: "1", },
    { rk: "u", pk: "2", },
    { rk: "u", pk: "1", }, // get rid of this one
    { rk: "x", pk: "y" },
];
let uniqueAnswerTableRows = answerTableRows.filter((v, i, a) => {
    return a.findIndex(t => (t.rk === v.rk && t.pk === v.pk)) === i;
});
console.log(uniqueAnswerTableRows);
// [ { rk: 'u', pk: '1' }, { rk: 'u', pk: '2' }, { rk: 'x', pk: 'y' } ]

-4
function hasAllUniqueChars( s ){ 
    for(let c=0; c<s.length; c++){
        for(let d=c+1; d<s.length; d++){
            if((s[c]==s[d])){
                return false;
            }
        }
    }
    return true;
}

1
欢迎来到Stackoverflow。如果您能解释一下您的答案而不是仅仅发一些代码,那将非常棒。谢谢! - progNewbie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接