首页 > 解决方案 > 使用 object.keys 过滤对象内的值并将其中的属性设置为 true

问题描述

我正在尝试遍历与某个值匹配的对象,然后将其中的属性设置为true. 以下是数据样本

set() {
    const data = {
        firstName: { checked: false, key: "firstName", tags: ["PERSONAL"] },
        lastName: { checked: false, key: "lastName", tags: ["PERSONAL"] },
        residence: { checked: false, key: "residence", tags: ["CONTACT"] },
        email: { checked: false, key: "email", tags: ["PERSONAL", "CONTACT"] },
        username: { checked: false, key: "username", tags: ["PERSONAL"] },
    };
    let newArray = Object.keys(data).filter((k) =>
        k["tags"].includes("PERSONAL")
    );
    newArray.map((a) => (a.checked = true));
    console.log(newArray);
}

我已经尝试使用上面的代码,但它不起作用。我如何实现我想做的事情?

标签: javascriptangulartypescript

解决方案


看来您需要使用Object.values. 请注意,Object.keys返回firstName, lastname,...但您需要过滤tag出现在对象中的内容。

 const data = {
            "firstName": { "checked": false, "key": "firstName", "tags": ["PERSONAL"] },
            "lastName": { "checked": false, "key": "lastName", "tags": ["PERSONAL"] },
            "residence": { "checked": false, "key": "residence", "tags": ["CONTACT"] },
            "email": { "checked": false, "key": "email", "tags": ["PERSONAL", "CONTACT"] },
            "username": { "checked": false, "key": "username", "tags": ["PERSONAL"] }
        }

        let newArray = Object.values(data).filter(k => k['tags'].includes('PERSONAL'))

        newArray.map(a => a.checked = true)
        console.log(newArray)


推荐阅读