【问题标题】:instead for, array foreach on Javascript [duplicate]代替,Javascript上的数组foreach [重复]
【发布时间】:2018-05-12 18:17:29
【问题描述】:

函数式编程就像影响我们编码习惯的大浪一样,就像forEach

尽管 For 在 javascript 中非常方便且实用。我希望整个循环看起来像functional,所以我将数组设置为let index = 0...

纯 javscript

for(let index = 0;index < 10;index++){
   //count 10 times.
}

功能解决方案

Array(10).forEach((value,index,arr)=>{
  //count 10 times. 
})

当数组中的元素为self时,我使用fill来解决这个问题,fill使functional复杂。

有什么方法可以在Arrayfor 中制作物品吗?

【问题讨论】:

  • 支持的解决方案代码:Array(10).fill().forEach(()=&gt;{})
  • 你想达到什么目的?
  • 创建数组是一个严重的问题,因此您可以使用 forEach 而不是普通的 for 循环。它也可能会运行得更慢。考虑for(let i=10; --i;){},它打字更少,性能更高。
  • @RachChen 像forEach,map 这样的所有函数都是为了让数据操作更具可读性。它们永远不会取代forwhile。这些功能的目的是让阅读变得容易。因此,如果我阅读,array.filter(...) 我只会查看条件并了解其目的。同样的事情,如果使用 for 实现的话,可读性会降低,因为我将不得不阅读整个内容。
  • 另外,你不能(明智地)摆脱 forEach,它必须运行整个长度,它不能代替 dowhile 循环。

标签: javascript arrays functional-programming


【解决方案1】:

如果您想以真正实用的方式编写,您可能想自己实现它:

function range(n){
    if(n <= 0)  return [];
    else        return range(n-1).concat([n]);
}

range(10).forEach(n => /* do stuff */);

请记住,如果您的代码真正具有功能性,则不需要 forEach 循环,因为它只会产生副作用,而您不希望在函数式编程中使用它。

【讨论】:

  • 这不能使用Array(10).fill(0)Array.from() 来完成吗?
  • Hassam,解释一下为什么你应该在开始循环之前用值分配和初始化一个 array
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 2021-03-25
  • 2022-01-12
  • 2016-05-22
  • 1970-01-01
  • 2016-06-13
相关资源
最近更新 更多