对象数组,用新对象替换对象

时间:2019-02-01 17:05:09

标签: javascript arrays json

我有一个对象数组,这些对象代表任何给定时间的模型数据(应用程序阶段的一组表单控件)。此对象阵列的视觉效果附在此处:

enter image description here

在此示例中,舞台上有两个对象,索引分别为0和1。可能只有一个对象或多个对象。

当选择数组中的对象之一时,它将变为activeItem(请参见“ this.activeItem”上方的console.log)。在这种情况下,“复选框”项是活动选择的项。

在我的应用程序的另一部分中,有一个编辑器,允许用户修改此选定元素的属性。该属性编辑器具有一个“应用”按钮,可捕获表单值并将更新后的属性提交回控制台。

我的任务是获取这些更新的/新的属性,并使用它们插入/替换activeItem的属性对象,然后更新/重写this.arrayOfObjects模型,以反映所选元素的更新后的属性。

从屏幕快照中可以看到,我已经console.logging了对activeItem属性对象的引用。我需要用新的更新属性对象替换该对象。怎么样?

3 个答案:

答案 0 :(得分:1)

既然你有对象的数组,可以将活动项设置为目的之一,和该变量将是阵列中的对象的引用。例如:

var array = [{a: 1, b: 2, c: 3}, {x: 1}, {x: 2}];
console.log(array[0]); // {a: 1, b: 2, c: 3}
var activeItem = array[0];
activeItem.a = 99;
console.log(array[0]); // {a: 99, b: 2, c: 3}

这样一来,写入activeItem的属性的对象的阵列中写入的属性,以正确的项目。

答案 1 :(得分:1)

由于您已经记录了数组中所有对象的index(包括活动对象),因此您只需获取用户的编辑并将其存储在obj中,然后创建一个合并{ {1}}和edits

activeObj

答案 2 :(得分:1)

arrayOfObjects [1]和activeItem都持有对同一对象的引用。使用这些引用之一更改您的属性obj,其他引用将显示它们,它们是同一对象。

this.activeItem.json.schema.properties = {{your_new_properties_object_here}}