如何比较两个数组,特别是如果第一个数组是一个具有多个参数的对象?
truthCheck([
{ "user": "Tinky-Winky", "sex": "male" },
{ "user": "Dipsy", "sex": "male" },
{ "user": "Laa-Laa", "sex": "female" },
{ "user": "Po", "sex": "female" }
], "sex");
我想到循环遍历第一个数组,然后检查第一个数组是否存在第二个数组。输出答案。每次我这样做,我得到一个空数组或在某些情况下只有数字0,1,2,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);
}