2016-11-28 96 views
-1

如何比較兩個數組,特別是如果第一個數組是具有多個參數的對象?我想通過循環第一個數組,然後檢查第一個數組是否存在第二個數組。輸出答案。每次我這樣做,我得到一個空數組或在某些情況下,只是數字0,1,2,3比較具有對象的數組

+3

您有兩個參數,第一個是對象的數組,第二個是一個字符串。我是對的,你試圖循​​環訪問數組中的對象,並試圖檢查它們中是否存在第二個參數? –

+0

這是正確的,如果他們確實存在,我想打印出來 – iceveda06

+1

所以......你沒有比較兩個陣列?因爲這就是你的頭銜所說的。可能想編輯你的問題來更新標題和第一句話。 –

回答

0

我要添加到實施混合 - 和其他人一樣,它使用array.forEach,但我認爲這是邏輯上簡單做過濾(檢查「性」的存在)在.filter( ),然後對結果執行.forEach()。我的實現是ES6,但您也可以使用較舊的匿名函數語法。

function truthCheck(arrayToCheck, propertyToCheck) { 
    arrayToCheck.filter(elem => elem.hasOwnProperty(propertyToCheck)).forEach(elem => console.log(elem[propertyToCheck])); 
} 
0

如果我的假設是正確的,你可以檢查是否通過循環數組中存在指定屬性的項目

var teleTubbies = [{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}]; 
var searchProperty = "sex"; 

function truthCheck(arrayToCheck, propertyToCheck) { 
    arrayToCheck.forEach(function(item) { 
    if(item.hasOwnProperty(propertyToCheck)) 
     console.log(item[propertyToCheck]) 
    }); 
} 

truthCheck(teleTubbies, searchProperty); 
0

濾波器基於一個對象(使用in操作者)上存在的指定屬性的條件的對象的輸入數組。

function truthCheck(objects, p) { 
    return objects.filter(e => p in e); 
}