javascript - 使用 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);
}
我已经尝试使用上面的代码,但它不起作用。我如何实现我想做的事情?
解决方案
看来您需要使用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)
推荐阅读
- php - 带有 SMTP 的 Cakephp 3 电子邮件不起作用
- node.js - 我的代理服务器配置不好吗?
- sql - Easiest way to synchronize two databases
- php - 如何在服务器上部署运行 docker 镜像
- ocaml - 为 bucklescript 中的异常打开堆栈跟踪
- java - 无法在不创建抽象类的情况下实现 Google Map API
- php - 在 PHP 中使用多个条件从 Json 文件中删除项目
- javascript - 以编程方式修改外部样式表中的样式
- c# - 使用 iTextSharp 在同一行上显示多个图像和文本
- mongodb - 如何使用 DBRef 查询 MongoDB?