收集满足特定条件的所有对象键的列表

时间:2017-03-25 01:38:29

标签: javascript arrays

我有一个函数getActiveProp

const getActiveProp = obj => Object.keys(obj).find(k => obj[k].active);

但是现在,我没有找到符合条件的第一个项目,而是希望获得所有这些项目的数组。

我知道我可以简单地做这样的事情,并将其包装在一个函数中:

var arr = ['foo', 'bar', 'baz'];
var arr2 = [];
arr.forEach(k => arr2.push(k));

但我只是想知道是否有单行方式来做,在forEach方法本身内创建数组,或使用一些类似的数组方法来完成它。可以这样做吗?

1 个答案:

答案 0 :(得分:3)

使用Array#filter代替Array#find

let object = {
  inactiveProp1: { active: false },
  activeProp1: { active: true },
  activeProp2: { active: true }
}

const getActiveProps = o => Object.keys(o).filter(k => o[k].active)

console.log(getActiveProps(object))