【发布时间】:2018-03-22 04:33:29
【问题描述】:
假设我有一个表单中的数组:
const array = [{id: 1, title: "this"}, {id: 2, title: "that"}];
我想更改给定对象中一个元素的值。因此,例如,我的输出是这样的:
[{id: 1, title: "this"}, {id: 2, title: "foo foo foo"}];
我将一个具有两个属性的对象传递给我的函数。第一个属性是我要修改的对象的id,第二个属性是新标题:
[2, "foo foo foo"]
我可以使用以下代码找到正确对象的索引:
index = array.findIndex(item => item.id === arr[0]);
但我不知道如何更改元素并将其替换为我的新标题 (arr[1])。
我想更改第二个对象中的标题元素而不改变数组。非常感谢任何建议。
编辑:对于“不改变数组”的混淆感到抱歉。我的意思是我不希望返回的数组只是原始数组的突变,而是一个新数组。也许“不改变状态”会是一个更好的词选择。
例如,如果我要像这样返回一个数组: 返回 [...状态] 这将给我一个新数组(尽管没有更改),而不会改变原始数组。
【问题讨论】:
-
发布你的功能
-
您的要求并不完全清楚。你不能用
array.find(({id}) => id === arr[0]).title = arr[1]之类的东西吗?从技术上讲,这不会改变数组,因为它与同一组对象引用仍然相同,但我不确定这是否是您的意思。 -
arr[index].title = "your new value"不工作吗? -
能否请您详细说明“不改变数组”的确切含义
-
@Phil:刚刚编辑了我的问题
标签: javascript arrays element immutability