关于数组求和

前言

工作时遇到要将数组里的元素依次求和而不是一次性将数组元素全部求和,找了很多博主,没有找到方法。现在自己想到了一个方法,如若需要可以参考 

一、整体求和

1、使用reduce方法,old为初始项或者前一次计算后的返回值,now为当前元素。

    var arr = [1, 2, 3, 4, 5]
    let num = arr.reduce((old, now) => {
        return old + now
    }, 0)
    console.log(num); //15

 注:1.1index为当前元素索引,可不写

        1.2arr为当前元素所在的数组,可不写

        1.3init为初始项数值(初始项一般给0)

array.reduce((old, now, index, arr)=>{
	...
}, init);

 2、使用递归方法求和

    let arr = [1, 2, 3, 4]

    function sum(r) {
        let len = r.length
        if (len == 0) return 0 //当长度为零则输出0
        else if (len == 1) return r[0] //当长度为1则输出第一项
        else if (len > 1) return r[0] + sum(r.slice(1))
            //当长度大于1时输出每次第一项相加  r[0]:为第一项, sum(r.slice(1)):为执行递归删除原先的 r[0]后现数组的r[0]
    }
    let num = sum(arr)
    console.log(num);//10

 3、使用循环求和

    var arr = [1, 2, 3, 4, 5]

    function sum(params) {
        let sum = 0;
        params.forEach(item => {
            sum += item
        })
        return sum
    }
    console.log(num);

 4、使用eval()求和

    let arr = [1, 2, 3, 4]

    function sum(r) {
        return eval(r.join("+"))
    }

    let num = sum(arr)
    console.log(num); //10

二、依次求和

    var arr = [1, 2, 3, 4, 5]

    function sum(params) {
        let sum = 0;
        params.forEach(item => {
            sum += item
        })
        return sum
    }

    let num = sum(arr.slice(0, 2)) //让前两位数字相加  3
    let num = sum(arr.slice(0, 3)) //让前三位数字相加  6
        //若在图标中需要依次统计可使用slice(0,index)   index为动态下标
    console.log(num);

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐