在反应中管理阵列道具

时间:2019-02-02 10:38:38

标签: javascript reactjs

我有一个React应用程序,但是我发现了一个错误:我正在过滤一个数组以搜索用户选择的当前项目,然后我将对其进行处理...但是,没有我不知道过滤器函数会返回对该数组项目的引用,因此,我对所选项目所做的每次更改都会对prop数组进行相同的操作。

const pippo = maledettoArray.filter(item => item.id === idInfame)[0];

我如何过滤prop数组以获取特定项目而不更改它?

2 个答案:

答案 0 :(得分:2)

您可以使用find方法代替filter来返回第一个匹配项并退出循环。

const pippo = maledettoArray.find(item => item.id === idInfame)

要创建对象的浅表副本,可以使用Object.assign或传播语法。

const clone = {...pipo}

如果要创建嵌套对象的深层副本,则可以使用Lodash _.cloneDeep(value)方法。

答案 1 :(得分:2)

首先,我建议您使用find函数而不是过滤器,以避免返回空数组,并且在[0]中未定义空数组

第二,是的,将返回对象引用。为了避免这种情况,可以使用Object.assign({}, originalObject)或使用扩展语法{...originalObject}。嵌套对象可能是一个潜在问题,但仍然是一个问题。 在这种情况下,https://medium.com/@Farzad_YZ/3-ways-to-clone-objects-in-javascript-f752d148054d

可能会对您有所帮助