我有一个React应用程序,但是我发现了一个错误:我正在过滤一个数组以搜索用户选择的当前项目,然后我将对其进行处理...但是,没有我不知道过滤器函数会返回对该数组项目的引用,因此,我对所选项目所做的每次更改都会对prop数组进行相同的操作。
const pippo = maledettoArray.filter(item => item.id === idInfame)[0];
我如何过滤prop数组以获取特定项目而不更改它?
答案 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