2016-11-28 98 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); 
}