在对数组中的某一项进行修改的时候,总是情不自禁地想到用foreach遍历,在遍历的时候通过条件判断来改变其某一项的值。这种想法真是太危险了。这是因为foreach传入的函数中的参数item其实是对其原数组的每一项的拷贝,因此在函数里修改的item并不是其真正的item。用这种方法根本没有办法修改到其原数组。因此,修改数组中某一项还是要通过数组下标的方式。目前我常用方法是先通过findIndex找到修改数组的某一项的index,再通过splice的方法进行修改。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
现在看自己之前写的这篇实在是太不严谨了,不过这也是新手常会犯的的问题。不过之前终极原因还是提到了就是foreach传入的函数中的参数item其实是对其原数组的每一项的拷贝,因此,用这种方式来修改原数组的值则必须取到原数组项的地址直接修改。用item = fn(item)是肯定不行的。可以利用forEach中的第二个参数index,通过arr[index]的方式进行修改。