返回JS对象中共享相同值的所有属性名称

时间:2017-12-24 14:42:44

标签: javascript arrays javascript-objects

我有一个对象数组,我想返回只包含快乐人名字的数组,并在每个人都快乐时返回所有名字。 我没有得到的是在每个人都快乐的时候得到所有的名字。有什么想法吗?

编辑:这是对象。

  [
  { 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;

}

1 个答案:

答案 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);
}