js 数组reduce改变原数组吗
时间: 2023-09-20 11:03:01 浏览: 39
`Array.reduce()` 方法不会改变原始数组,而是返回一个新值。
在使用 `Array.reduce()` 方法时,你可以传入一个初始值和一个回调函数,该函数将对每个元素进行处理,并返回一个累加值。最终,`reduce()` 方法将返回一个累加值,该值是通过对每个元素进行处理而得到的。
然而,需要注意的是,回调函数可能会改变数组元素的值。如果你需要改变原始数组,应该使用 `Array.forEach()` 或 `Array.map()` 方法。
例如,假设你有一个数组 `arr`,你想对其进行求和,并将结果保存到一个变量中,同时不改变原始数组。你可以使用 `Array.reduce()` 方法来实现:
```javascript
const arr = [1, 2, 3, 4, 5];
const sum = arr.reduce((acc, cur) => {
return acc + cur;
}, 0);
console.log(sum); // 15
console.log(arr); // [1, 2, 3, 4, 5]
```
在这个例子中,我们使用 `Array.reduce()` 方法对数组中的每个元素进行求和,并将结果保存在变量 `sum` 中。由于 `Array.reduce()` 方法不会改变原始数组,因此 `arr` 数组的值不会发生变化。
需要注意的是,如果你在回调函数中改变了原始数组的值,那么这种方式将会影响到原始数组。因此,在使用 `Array.reduce()` 方法时,应该确保回调函数不会改变原始数组的值,以避免不必要的副作用。