我有一个元素数组作为输入。我只需要将数组元素的值加倍。虽然使用 map 来获得解决方案很简单。我对使用 reduce 很感兴趣。例如: io: var a = [1,2,3,4,5]; 操作:[2,4,6,8,10]; .但这就是我结束的地方。
var c = a.reduce( (acc,b) => {
acc =b*2;
console.log(acc);
return acc
},[]);
最佳答案
var arr = [1, 2, 3, 4, 5];
var doubled = arr.reduce(function (memo, val) {
memo.push(val * 2);
return memo;
}, []);
console.log(doubled);
var arr2 = [1, 2, 3, 4, 5];
arr2.reduce(function (memo, val, i) {
memo[i] *= 2;
return memo;
}, arr2);
console.log(arr2);
var arr3 = [1, 2, 3, 4, 5];
arr3.reduce(function (memo, val, i) {
arr3[i] *= 2;
}, null);
console.log(arr3);
在第一个解决方案中,reduce
从一个空数组(提供给它的第二个参数)开始。然后,该数组作为我们提供的函数的第一个参数 (memo
) 向下传递到下一次迭代。第二个参数是迭代的当前元素。在将双倍值插入新数组后,该数组将被返回,以便在未来的迭代中可以作为 memo
访问它。
在第二种解决方案中,没有创建新数组,而是使用初始数组。它作为第二个元素传递给 reduce
,然后通过 memo
访问。
第三个解决方案与第二个解决方案类似,除了缩减数组只是按原样引用。请注意,null
必须作为第二个参数传递。如果未传递任何内容,reduce
将从第二个元素开始(因为没有初始值)并且第一个元素不会加倍。
关于javascript - 使用 Reduce 将每个数组元素的值加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42394730/