javascript - 如果属性在另一个数组中并且值为 true,则过滤对象数组
问题描述
以下是产生所需输出的示例。
const data = [
{ itemID: '300', status: 'active', inventoryFlag: true, certifiedFlag: false, donateFlag: true },
{ itemID: '400', status: 'inactive', inventoryFlag: true, certifiedFlag: true, donateFlag: false },
{ itemID: '500', status: 'active', inventoryFlag: false, certifiedFlag: false, donateFlag: false },
{ itemID: '600', status: 'active', inventoryFlag: false, certifiedFlag: true, donateFlag: true },
{ itemID: '700', status: 'inactive', inventoryFlag: false, certifiedFlag: true, donateFlag: false }
];
document.getElementById("data").innerText = JSON.stringify(data.filter(o => o.inventoryFlag || o.donateFlag));
<textarea id="data" rows="50" cols="100"></textarea>
我正在尝试找到一种方法在单独的数组中列出过滤标志,然后以.filter()
某种方式使用它来获得与上述代码相同的结果集。
例如,以下是用于过滤的标志,并且在要包含在最终数据集中的对象中,至少有一个值必须为真 -
const flags = ['inventoryFlag', 'donateFlag'];
首先,我尝试了这个,但它没有做任何事情:
const filteredData = data.filter(o => flags.includes(Object.keys(o)));
解决方案
在 内部filter
,使用该some
方法来检测包含在flags
数组中的条目的任何属性键是否具有 的值true
。
const data = [
{ itemID: '300', status: 'active', inventoryFlag: true, certifiedFlag: false, donateFlag: true },
{ itemID: '400', status: 'inactive', inventoryFlag: true, certifiedFlag: true, donateFlag: false },
{ itemID: '500', status: 'active', inventoryFlag: false, certifiedFlag: false, donateFlag: false },
{ itemID: '600', status: 'active', inventoryFlag: false, certifiedFlag: true, donateFlag: true },
{ itemID: '700', status: 'inactive', inventoryFlag: false, certifiedFlag: true, donateFlag: false }
];
const flags = ['inventoryFlag', 'donateFlag'];
const result = data.filter(entry =>
flags.some(flag => entry[flag] === true)
);
console.log(result);
推荐阅读
- python - 从 Notepad++ 运行 Python 时获取当前路径
- javascript - Why does Firefox say it "can’t establish a connection to the server at ws://localhost:3000/" after successful return upgrade request?
- javascript - pwa error: Uncaught (in promise) TypeError: Request failed
- php - How do i use AJAX to update my page after running a PHP function?
- excel - 如何在一个数组为 (A1:A10 = B1:B1000) 的情况下编写 SUMPRODUCT
- c# - 在 WebAPI 中返回一对多列表应该放什么?
- apache-drill - 如何在 Apache Drill API 响应中禁用科学记数法
- laravel - Retrieve the owner of a polymorphic relationship laravel
- javascript - 基于背景颜色的倒置标志
- ruby-on-rails - 未选中时,Recaptcha Gem 不会阻止提交(Rails 5.2)