我有一個對象數組,全部使用相同的鍵。我想檢查2個鍵,在這種情況下,所有OBJECTS中的「a」&「b」是否具有相同的值。含義a === a和b === b,橫跨所有對象。對象循環數組,比較鍵值
var arr = [{a:"x", b:2, c:3, d:4},{a:1, b:2, c:3, d:4},{a:1, b:2, c:3, d:4},{a:1, b:2, c:3, d:4}];
如果其中一個鍵值(a或b)與其他值不匹配,我想返回false。這種情況應該返回false,因爲arr [0] =「x」中的「a」,而其他所有其他值等於1;
這是我的嘗試。顯然不工作,但我試圖讓2個循環一次比較2個對象。例如,第一個循環將從arr [0]開始,第二個循環將從arr [1]開始,然後比較arr [3]與arr [4]之間的比較,依此類推。儘管陣列的長度不會總是平坦的。
function compareKeyVals(arr){
for(var i = 0; i<arr.length; i+=2){
for(var j = 1; j<arr.length; j+=2){
for(key in arr[i]){
for(keyz in arr[j]){
if(key === "a" && keyz === "a"){
if(arr[i][key] != arr[j][keyz]){
return false;
}
}
}
}
}
}
}
compareKeyVals(arr);
謝謝。
注意,如果在'arr' – user1102901
真沒對象,這將返回true,這也將導致一個錯誤,如果有數組中只有一個元素是。但在這兩種情況下,整個檢查無論如何都毫無意義。但是,真正的實現當然也應該能夠處理邊緣案例。 –
那麼如果只有一個元素,它不會進入for循環,並返回true – user1102901