JS数组求和的几种方式

本文探讨了使用JavaScript进行数组求和的两种方法,包括ES5和ES6的实现。通过实例代码展示了如何在不同语法环境下计算数组元素总和,并欢迎大家在文章下方留言交流。

[Talk is cheap. Show me the code]

不想看理论知识请直接移步最后代码示例。

这里只写了几个简单的例子,其中sum2方法在掘金上有很多争议的地方。自己仅作为学习记录下来。

一、es5
 function sum(arr){
    if(Array.isArray(arr)){
        var arrSum = 0
        for(var i=0;i<arr.length;i++){
            arrSum +=arr[i]
        }
        return arrSum  
    }
 }
function sum2(arr){
    if(Array.isArray(arr)){
        var arrSum = 0
        for(var i=0;i<arr.length;i++){
            arrSum += arr[i]+arr[arr.length-i-1]
        }
        return arrSum/2  
    }
}

 function sum3(arr){
    if(Array.isArray(arr)){
       let  arrSum = 0
       arr.forEach((item,index) => {
        arrSum+=item
       })
       return arrSum
    } 
}
function sum4(arr){
    if(Array.isArray(arr)){
       let  arrSum = 0
       arrSum = eval(arr.join('+')) 
       return arrSum
    }  
}
 /** 等差数列求和*/
function sum5(arr){
    if(Array.isArray(arr)){
        var arrSum = 0
        arrSum = (arr[0]+arr[arr.length-1])*arr.length/2
        return arrSum  
    } 
}
二、es6
/** es6 */
// prev:上次调用函数的返回值
// current:当前元素
// index:当前元素的索引
// arr:当前被遍历的数组
var sumEqual = arr.reduce((prev,current,index,arr)=>{
    return prev+current
})

如果有任何关于本文的意见,欢迎在文章下方留言,我会在看到的第一时间回复。

### JavaScript 数组求和的实现方法 在 JavaScript 中,数组求和可以通过多种方式实现。以下是几种常见的方法: #### 1. 使用 `for` 循环 通过传统的 `for` 循环遍历数组并累加元素值来实现求和[^3]。 ```javascript function sumFor(arr) { var s = 0; for (var i = 0; i < arr.length; i++) { s += arr[i]; } return s; } console.log(sumFor([1, 2, 3, 4])); // 输出: 10 ``` #### 2. 使用 `forEach` 遍历 利用数组的 `forEach` 方法对每个元素进行累加操作[^3]。 ```javascript function sumForEach(arr) { var s = 0; arr.forEach(function(val) { s += val; }); return s; } console.log(sumForEach([1, 2, 3, 4])); // 输出: 10 ``` #### 3. 使用 `reduce` 方法 `reduce` 是一种函数式编程方法,能够将数组中的所有元素归约为一个值。 ```javascript function sumReduce(arr) { return arr.reduce(function(acr, cur) { return acr + cur; }, 0); } console.log(sumReduce([1, 2, 3, 4])); // 输出: 10 ``` #### 4. 使用递归 递归方法通过不断缩小问题规模直到达到基本情况来实现求和。 ```javascript function sumRecursive(arr) { if (arr.length === 0) { return 0; } else if (arr.length === 1) { return arr[0]; } else { return arr[0] + sumRecursive(arr.slice(1)); } } console.log(sumRecursive([1, 2, 3, 4])); // 输出: 10 ``` #### 5. 使用 `eval` 函数 虽然不推荐使用 `eval` 函数,但可以通过将其作为代码执行来实现数组求和[^1]。 ```javascript function sumEval(array) { const expression = array.join('+'); return eval(expression); } console.log(sumEval([1, 2, 3, 4])); // 输出: 10 ``` #### 6. 多维数组求和 对于多维数组,可以扩展递归方法以处理嵌套结构[^4]。 ```javascript Array.prototype.sum = function() { var sum = 0; this.forEach(function(item) { if (Array.isArray(item)) { sum += item.sum(); // 递归调用 } else { sum += Number(item); } }); return sum; }; console.log([1, 2, 3, [4, 5]].sum()); // 输出: 15 ``` ### 注意事项 - 使用 `eval` 虽然简单,但由于安全性问题和性能开销,通常不建议在实际开发中使用。 - 对于大型数组或需要高性能的应用场景,`reduce` 和 `for` 循环通常是更好的选择。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值