javascript - 使用另一个数组更新对象数组
问题描述
我需要根据 ES6 中的另一个数组来更新对象数组。例子
let a = [
{ id : 23, active :false, status:"" },
{ id : 33, active :false, status:"" },
{ id : 167, active :false, status:"" },
{ id : 18, active :false, status:"" },
{ id : 200, active :false, status:"" },
]
我的第二个包含对象的数组
let marked = [167,33,23];
预期结果如下
let a = [
{ id : 23, active :true, status:"updated"},
{ id : 33, active :true, status:"updated" },
{ id : 167, active :true, status:"updated" },
{ id : 18, active :false, status:"" },
{ id : 200, active :false, status:"" },
]
请让我知道如何获得预期的结果。为此,我们在 lodash 中还有其他方法吗?
解决方案
你不需要lodash,你可以这样做:
let a = [{
id: 23,
active: false
},
{
id: 33,
active: false
},
{
id: 167,
active: false
},
{
id: 18,
active: false
},
{
id: 2,
active: false
},
]
let marked = [167, 33, 23];
let result = a.map(x => ({
...x,
active: marked.includes(x.id)
}))
console.log(result)
marked
如果您遍历数组并将其元素存储在一个对象中,您可以加快速度。然后在map
检查元素x.id
是否在对象内部期间会更快(与检查内部数组相比)。但实际上,在大多数情况下,您不应该注意到差异。
推荐阅读
- android - Android Studio 上未将手机检测为 Android 设备
- node.js - AZURE 不允许使用 HTTP 错误 405 方法
- android - 在 Android Studio 中 Flutter 运行失败原因:java.lang.IllegalStateException:缺少 Crashlytics 构建 ID
- javascript - 在 html 网页上显示列表 (JSON)
- python - 错误 FileNotFoundError [winError 2] anaconda
- azure - Azure CLI 无法连接到 Docker 守护程序
- java - java:通过套接字发送大文件
- flutter - Flutter - 在侦听器内多次显示警报对话框
- artifactory - 无法将 Artifactory 从版本 6.x 升级到 7.x
- android - 使用 Cloud Firestore 和 Android Studio 实现搜索功能