JavaScript:如何替换一个对象数组的元素(通过参考,而不是索引)



我有几个对象数组

a=[ {v:10}, {v:11}, {v:12}, {v:13} ]

b=[ {v:20}, {v:21}, {v:22}, {v:23} ](etc(

以及我要替换对象的引用列表。

我没有 index 进入数组,但是我确实有引用我要替换的项目

诸如此类的参考: s1=a[2]s1=b[0]

我如何使用此参考来替换实际数组的元素而不知道其引用哪个数组?

这不起作用:s1 = {v:'new'},因为它仅替换S1,而不是数组的元素

这不是有用的s1.v='new',就像实际上一样,我的对象很复杂,具有许多属性,我不想更新它们。

谢谢!

如果您的对象只是普通的 Object s(或至少所有相同的普通类型(,则您 can can 删除所有属性并在新属性中交换:

const replaceProperties = (dest, src) => {
    Object.keys(dest).forEach(key => {
        delete dest[key];
    });
    Object.assign(dest, src);
};
replaceProperties(s1, {v: 'new'});

这不是一个好主意,但由于几个原因,请查看您是否可以开始将索引到数组中。

如果您的对象都是相同的 shape (即始终具有相同的属性(,那么利用它的优势要好得多,并且是重复 s1.v = 'new' s的多效率。/p>

Object.assign(s1, {v: 'new'});

最新更新