使用javascript的数组中的条件过滤器

5ssjco0h  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(106)

我有两个数组,第一个数组有键,我想检查第二个数组中所有键的值是否为真,然后返回真值数组。
我有如下代码

const keysArray = ['phoneNo', 'name']

const data = [{ demo1:'abc', match_status:{ phoneNo: true, name: null }}, { demo2:'abc', match_status_flag:{ phoneNo: true, name: true }}]

我的预期输出如下所示:

const outputArray = [{ demo2:'abc', match_status_flag:{ phoneNo: true, name: true }}]

我尝试代码如下,但没有得到预期的输出

keysArray.map((k) => data.filter(i => i.match_status[k] === true))
uemypmqf

uemypmqf1#

您需要一个公共属性(如match_status_flag)并过滤数据。

const
    keys = ['phoneNo', 'name'],
    data = [{ demo1: 'abc', match_status_flag: { phoneNo: true, name: null } }, { demo2: 'abc', match_status_flag: { phoneNo: true, name: true } }],
    result = data.filter(({ match_status_flag }) =>
        keys.every(k => match_status_flag[k])
    );

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

相关问题