在JavaScript对象中查找重复值

时间:2016-03-02 17:48:06

标签: javascript object

给出以下对象:

answers = {'a': 3,'b': 2,'c': 3, 'd': 1};

如何查找是否存在重复值?我需要写一个条件,说明其中两个是否具有相同的值,然后是console.log('duplicate values found')

2 个答案:

答案 0 :(得分:1)

你必须编写一个嵌套循环来找到它,

var keys = Object.keys(answers);
var dupe = false;

for(var i=0;i<keys.length;i++){
 for(var j=i+1;j<keys.length;j++){
   if(answers[keys[i]] === answers[keys[j]]){
     dupe = true;
     break;
   }
 }
 if(dupe){ console.log("dupe value is there.."); break; }
}

DEMO

答案 1 :(得分:0)

我猜您的意思是重复值,而不是重复的键/值对。我就是这样做的:

function findDuplicateValues(input) {
    var values = {},
        key;

    for (key in input) {
        if (input.hasOwnProperty(key)) {
            values[input[key]] = values.hasOwnProperty(input[key]) ? values[input[key]] + 1 : 1;
        }
    }

    for (key in values) {
        if (values.hasOwnProperty(key) && values[key] > 1) {
            console.log('duplicate values found');
            break;
        }
    }
}

对于大型对象,它将比前一个答案更快,因为没有嵌套循环(这将在线性O(n)时间而不是二次O(n 2 )时间内执行)。