var persons = [
{name : "jak" , age:20},
{name : "hasan" , age: 15},
{name : "reza" , age:18}
];
function adult(el,index,arr){
if (el.age >= 18)
return el.name;
}
document.getElementById("x").innerHTML = persons.filter(adult);
}
我期待jak和reza, 但我看到[对象对象] [对象对象]。
答案 0 :(得分:3)
过滤器需要返回true以保留元素,否则返回false。
见下文:
var persons = [{
name: "jak",
age: 20
}, {
name: "hasan",
age: 15
}, {
name: "reza",
age: 18
}];
function adult(el, index, arr) {
if (el.age >= 18)
return true;
}
document.getElementById("x").innerHTML = persons.filter(adult).map(function(person) {
return person.name;
});

<div id='x'></div>
&#13;
参考:MDN
答案 1 :(得分:2)
您正在查看[object Object], [object Object]
,因为您正在尝试将对象数组显示为字符串。之所以发生这种情况,是因为您似乎认为filter
会根据它的返回值创建一个字符串。这不是filter
的工作方式。 filter
接受一个返回true
或false
的函数,并创建一个只包含返回true
的结果的新数组。
var adults = persons.filter(function(person) {
return person.age >= 18;
});
如果要将数组中的某些元素映射到其他元素,可以使用map
。
var adultNames = adults.map(function(person) {
return person.name;
});
最后,要将数组转换为单个字符串,可以使用join
。
document.getElementById("x").innerHTML = adultNames.join('and');