Javascript 比较具有对象的数组

Javascript 比较具有对象的数组,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,如何比较两个数组,尤其是第一个数组是具有多个参数的对象时 truthCheck([ { "user": "Tinky-Winky", "sex": "male" }, { "user": "Dipsy", "sex": "male" }, { "user": "Laa-Laa", "sex": "female" }, { "user": "Po", "sex": "female" } ], "sex"); 我想循环第一个数组,然后检查第一个数组上是否存在第二个数

如何比较两个数组,尤其是第一个数组是具有多个参数的对象时

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

我想循环第一个数组,然后检查第一个数组上是否存在第二个数组。输出答案。每次执行此操作时,我都会得到一个空数组,或者在某些情况下只是数字0、1、2、3。

如果我的假设正确,您可以通过循环数组中的项来检查给定属性是否存在

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);

我将把我的实现添加到混合中,就像它使用array.forEach的其他实现一样,但我认为在.filter()中进行过滤(检查是否存在“sex”),然后对结果执行.forEach()在逻辑上更简单。我的实现是ES6,但您也可以使用较旧的匿名函数语法

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

根据对象上存在指定属性的条件筛选对象的输入数组(使用中的运算符)


您有两个参数,第一个是对象数组,第二个是字符串。你试图循环数组中的对象,并试图检查其中是否存在第二个参数,这是正确的吗?如果它们确实存在,我想将它们打印出来。。。你不是在比较两个阵列吗?因为你的头衔就是这么说的。可能想更新你的问题的标题和第一句话。而且,你问的问题似乎与此基本相同:,只是在一个循环中…你如何比较两个数组你指的是哪两个数组?我只看到一个数组。你是说数组元素吗?检查第一个阵列上是否存在第二个阵列哪个第二个阵列?每次我这样做,都会向我们显示您遇到问题的代码。
function truthCheck(objects, p) {
  return objects.filter(e => p in e);
}