javascript - 使用另一个数组更新对象数组

标签 javascript arrays object ecmascript-6 lodash

我需要根据 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 是否在对象内部会更快(与检查数组内部相比)。但实际上,在大多数情况下,您应该不会注意到差异。

关于javascript - 使用另一个数组更新对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69691275/

相关文章:

c - 如何在 sizeof 运算符的帮助下初始化数组?

python - 为什么 python 的 imp.reload() 不删除旧的类和函数?

javascript - 过滤和显示嵌套对象数据

javascript - 在编写Chrome扩展时, "var i in windows"(在回调函数(windows)内)是如何编译的?

javascript - knockout中 "with"绑定(bind)如何实现分页

c - 二维数组自动增长

javascript - 如何检查php数组值是否在js数组中?

java - 在 Main[JAVA] 中用另一种类型的对象替换对象

javascript - jQuery : Submit event not firing on FireFox

javascript - 如何在 CheckboxList selectedIndexChange 上显示确认框?