比较一个有对象的数组

时间:2016-11-28 22:56:42

标签: javascript arrays javascript-objects

如何比较两个数组,特别是如果第一个数组是一个具有多个参数的对象?

truthCheck([
    { "user": "Tinky-Winky", "sex": "male" },
    { "user": "Dipsy", "sex": "male" },
    { "user": "Laa-Laa", "sex": "female" },
    { "user": "Po", "sex": "female" }
], "sex");

我想到循环遍历第一个数组,然后检查第一个数组是否存在第二个数组。输出答案。每次我这样做,我得到一个空数组或在某些情况下只有数字0,1,2,3。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

我将我的实现添加到混合中 - 就像其他人使用array.forEach一样,但我认为在逻辑上更简单的做过滤(检查" sex&#34的存在) ;)在.filter()中然后对结果执行.forEach()。我的实现是ES6,但你也可以使用旧的匿名函数语法。

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

答案 2 :(得分:0)

根据对象上存在指定属性的条件(使用in运算符)过滤对象的输入数组。

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