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

标签 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 方法本身中创建数组,或者使用一些类似的数组方法来做到这一点。可以吗?

最佳答案

使用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))

关于javascript - 收集满足特定条件的所有对象键的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43011586/

相关文章:

c - 递归搜索未排序数组上的元素

arrays - swift 3 : Sort Ordered List of Objects by Property

javascript - 为什么在月份下拉列表中选择选项 12 时仅不加载 12 月份?

javascript - 谷歌登录点击两次?

javascript - 将 Angularjs 代码包装在闭包中的正确方法是什么?

ios - 如何在 block 内或 block 外打印完整数组?

javascript - 动画在 FF 和 IE 上卡住,但在 Chrome 上不会

javascript - 更改 Google 云端硬盘文档中第一张图片的 CSS

c++ - 递归定义数组中的数据对齐和排序

javascript - 使用 Knockout.js 中的新项目更新可观察数组的位置