我有一个对象数组,我想返回只包含快乐人名字的数组,并在每个人都快乐时返回所有名字。 我没有得到的是在每个人都快乐的时候得到所有的名字。有什么想法吗?
编辑:这是对象。
[
{ name: 'Don', disposition: 'Happy' },
{ name: 'Trev', disposition: 'Happy' },
]
function findHappyPeople(people) {
var happyPeople = Object.keys(people).filter(function(key) {
if(people[key] === 'Happy') {
return people[name]
}
});
return happyPeople;
}
答案 0 :(得分:2)
你有一个对象数组,因此这里不需要Object.keys()
。
您可以在过滤器后使用.map()
操作来结束一系列名称。
您的people[name]
代码无效,因为您没有name
变量,但如果您使用的是全局变量,则不是您想要的变量。您的数据具有.name
属性,因此请使用该属性。
const data = [
{ name: 'Don', disposition: 'Happy' },
{ name: 'Trev', disposition: 'Happy' },
]
console.log(findHappyPeople(data));
function findHappyPeople(people) {
return people
.filter(function(p) { return p.disposition === "Happy" })
.map(function(p) { return p.name });
}
或使用箭头函数语法:
const data = [
{ name: 'Don', disposition: 'Happy' },
{ name: 'Trev', disposition: 'Happy' },
]
console.log(findHappyPeople(data));
function findHappyPeople(people) {
return people
.filter(p => p.disposition === "Happy")
.map(p => p.name);
}