【发布时间】:2017-03-08 03:49:32
【问题描述】:
我有一个叫做探针的对象。它有一个称为传感器的属性,它是一个数组。
var probe = {
sensors = [
{ id: 1, checked: false },
{ id: 2, checked: true },
{ id: 3, checked: false },
... //more sensors
],
... //other properties
}
我有一个单独的数组,其中包含更新的传感器列表,如下所示。
var updatedSensors = [
{ id: 1, checked: true },
{ id: 3, checked: true }
];
我想根据 updatedSensors 中的值更新探测对象中的传感器数组。我该怎么做?
这可以通过使用几个 for 循环轻松实现。但是 for 循环并不是 JavaScript 中迭代的最佳方式,所以我想知道如何以首选方式进行此操作。
编辑:
updatedSensors 中的对象是 probe.sensors 中对象的子集。换句话说,updatedSensors 没有probe.sensors 中的所有对象(id),但是probe.sensors 具有updatedSensors 中的所有对象(ids)。
谢谢。
【问题讨论】:
-
ids 是唯一的吗?如果是这样,我会将其中一个数组转换为id->checked的哈希值以节省一些循环 -
如果这是
sensors = { 1:false, 2:true, 3:false },您只需使用Object.assign。 -
@4castle 是的,这会起作用,但阵列中的传感器 objs 也有其他属性。 id 和 checked 只是两个属性。
-
@CodingWithSpike 是的,键是唯一的。我不知道翻译成哈希是什么意思,但会查一下。
-
请检查stackoverflow.com/a/39127782/1463841(使用lodash
unionBylodash.com/docs/4.16.4#unionBy)
标签: javascript arrays