工作中遇到一业务场景为需要给一个[{...},{...}]类型的数组更新数据,请求下来的数据结构与自己定义的结构相同,想通过foreach方法遍历两个数组然后进行对象中的id值,if(item.id===data.id){item=data;}这种方式来实现(想通过js的对象为引用类型实现)对原数组更新,发现并不能成功赋值,实际上item只是新建出来的一个变量指向了arr数组的一个项,并没有改变数组中的任何东西。这种方式不能直接将对象替换为对象,但是可以改变对象里面的某个值,比如item.name='xiaoxiao',就可以成功赋值。
想要实现上述场景,可以实用map函数,map函数在不改变原数组的情况下返回一个满足特定条件的数组,将返回值赋值给原数组即可实现数组数据更新。