根据值从对象数组中选择一个属性:Javascript

新手上路,请多包涵

我有一个具有以下结构的对象数组:

 var arr = [
  {
    "value": "abc",
    "checked": true
  },
  {
    "value": "xyz",
    "checked": false
  },
  {
    "value": "lmn",
    "checked": true
  }
];

let result = arr.filter(item => item.checked);

console.log(result);

我希望输出是:

 ["abc", "lmn"]

因为那两个 valuechecked: true

我试过根据检查值过滤掉:

 let result = arr.filter(item => item.checked);

我得到的对象有 checked 属性值设置为 true

帮助将不胜感激。

原文由 joy08 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 183
2 个回答

您可以使用 reduce 并检查 checked 属性是否为真,然后 push (正如 assor 指出的那样)对于 2 个循环:

 const arr = [
  { "value": "abc", "checked": true },
  { "value": "xyz", "checked": false },
  { "value": "lmn", "checked": true }
]

const filtered = arr.reduce((a, o) => (o.checked && a.push(o.value), a), [])
console.log(filtered)

原文由 Kobe 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用过滤器和地图:

 const arr =[{"value":"abc","checked":true},{"value":"xyz","checked":false},{"value":"lmn","checked":true}];

 const result = arr.filter(res=>res.checked).map(ele=>ele.value);

 console.log(result);

原文由 Ghoul Ahmed 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题