JS数组求和方法

数组求和,一般我们的想法都是去遍历数组各项,然后累加。
那就是这样:

 function sumArr(arr){
      var sum = 0;
      for(var i = 0;i<=arr.length;i++){
    sum += arr[i];//前提是arr中各项是数字,而不是数字字符串
//如果是数字字符串:sum += Number(arr[i]);
    }
  return sum;
}

又或者是forEach遍历:

function sumArr(arr){
        var sum = 0;
        arr.forEach(function(val,index,arr){
              sum += val;
        })
    return sum;
}

还有一种比较黑科技的写法:

function sumArr(arr){
        return eval(arr.join("+")) 
}//直接把他变成各个数的加法运算字符串

当然还有这种被人广泛称赞的函数式编程的写法:

function sumArr(arr){
        return arr.reduce(function(prev,cur){
            return prev + cur;
        },0);
}
//reduce方法有两个参数,一个是callbackfunction(回调函数),
//二是设置prev的初始类型和初始值

有一道笔试题:(由此而总结了该文章)

给定任意非负整数,反复累加各位数字直到结果为个位数为止。例如给定非负整数912,第一次累加9+1+2 = 12, 第二次累加1+2 = 3, 3为个位数,循 环终止返回3。请编程实现。

function add(num){
    if(isNaN(num)) return;
    if(num<10) return num
    const res=num.toString().split('').reduce((sum,value)=>{
        return sum+Number(value)
    },0)
    return add(res);
}
add(345);
3
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容