javascript - 使用 Reduce 将每个数组元素的值加倍

标签 javascript functional-programming

我有一个元素数组作为输入。我只需要将数组元素的值加倍。虽然使用 ma​​p 来获得解决方案很简单。我对使用 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/

相关文章:

javascript - 页面加载 x 秒后运行某个脚本 JS

javascript - 滚动到特定标签

map - F# - 像对待 map 一样对待函数

javascript - 在功能上前置一个数组元素

haskell - 在依赖类型的函数式编程语言中扁平化列表更容易吗?

haskell - 代码改进的示例和练习

javascript - Firebase 存储 : string does not match format base64: invalid character found. 仅当调试关闭时

javascript - 仅当我在 Chrome 上缓存刷新时,网站才能完全运行,在其他浏览器上运行良好

java - 浏览器控制台无法识别使用 selenium webdriver 注入(inject)的 js 变量

list - 是否有像 'map' 这样对参数列表列表而不是多个参数列表进行操作的函数的典型名称?