前端javascript经典:数组求和最优解;

1,006 阅读1分钟

数组求和

计算给定数组 arr 中所有元素的总和

输入描述:
数组中的元素均为 Number 类型

示例1

输入

[ 1, 2, 3, 4 ]
输出
10
  • way1: forEach(callback(currentValue,index,array),thisArg);

参考MDN:forEach

  /**
        * 数组求和
        * thisArg:为forEach()里面this对象的传参,可选传值;
        */
    function sum(arr) {
        let s = 0;
        arr.forEach(function(val, idx, arr) {
            s += val;
           
        }, this);
    
      
        return s;
    };

运行时间:1274ms

占用内存:77796k

  • way:2:for循环

      /**
      * 数组求和
      */
      function sum(arr) {
          let result=0
          for(let item of arr){
              result+=item;
          }
          return result;
      }
    

运行时间:1406ms

占用内存:78000k

  • way3:reduce(accumulator,currentValue,currentIndex,sourceArray);

参考MDN:Array.Reduce

    function sum(arr) {
        return arr.reduce((accumulator,currentValue,currentIndex,sourceArray)=>{
            return accumulator+currentValue;
        });
    };

运行时间:1434 ms

占用内存:77884K

通过以上解法:最优解为Array.forEach(function(currentValue,currentIndex,sourceArray),thisArg);