给出以下对象:
answers = {'a': 3,'b': 2,'c': 3, 'd': 1};
如何查找是否存在重复值?我需要写一个条件,说明其中两个是否具有相同的值,然后是console.log('duplicate values found')
。
答案 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; }
}
答案 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 )时间内执行)。