有什么方法可以避免for循环? (ES6 / JavaScript)

时间:2017-10-11 02:34:39

标签: javascript algorithm ecmascript-6

使用ES6改进我的算法知识(我对ES6来说相当新),并想知道在我写的每个数组函数中最大的避免for循环是否有任何方法(如果在所有方面)?

function largestEach(arr) {
   for(const [i,v] of arr.entries())
      arr[i] = v.sort((a,b) => b - a).filter((e,i) => i === 0);
   return arr.reduce((a,b) => a.concat(b));
}
largestEach([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

控制台日志:[5, 27, 39, 1001]这是正确的。

这是概念性的,所以我没有使用它的真实用例。我不反对循环只是好奇我在ES6(或一般的JS)中更好的选择。纯粹好奇!

3 个答案:

答案 0 :(得分:4)

您只需使用.map()即可。基本上你的for循环等同于:

arr = arr.map(elem => elem.sort((a, b) => b - a).filter(e,i) => i === 0)

然而,接下来有趣的是,在这种情况下你不必指定排序功能。另外,我不会使用.filter(e,i) => i === 0),而是.pop()[0]

所以你可以改写:

arr = arr.map(elem => elen.sort()[0])

接下来你可以使用Math.max,这样你就可以重写整个功能:

function largestEach(arr) {
  return arr.map(e => Math.max(...e))
}

答案 1 :(得分:2)

.meteor/packages

答案 2 :(得分:2)

danwild:set-connection-options