JavaScript

js数组求和方法

2019-08-25  本文已影响0人  Aniugel
一、for for in for of forEach map
    var arr = [7, 2, 29, 4];
    // for方法
    var sum = 0;
    for (var i = 0, len = arr.length; i < len; i++) {
        sum += arr[i]
    }
    console.log('for', sum)


    var arr = [7, 2, 29, 4];
    // for in
    var sum = 0;
    for (var i in arr) {
        sum += arr[i]
    }
    console.log('for in', sum)

    var arr = [7, 2, 29, 4];
    // for of
    var sum = 0;
    for (var i of arr) {
        sum += i
    }
    console.log('for of', sum)

    var arr = [7, 2, 29, 4];

    // forEach
    var sum = 0;
    arr.forEach((val, index, arr) => {
        sum += val
    })
    console.log('forEach', sum)

    var arr = [7, 2, 29, 4];

    // map
    var sum = 0;
    arr.map((val, index, arr) => {
        sum += val
    })
    console.log('map', sum)
二、eval方法(不推荐,耗性能,最慢)
    var arr = [7, 2, 29, 4];
    // eval方法
    console.log('eval', eval(arr.join('+')))
三、reduce归并方法

这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。其中, reduce()方法从数组的第一项开始,逐个遍历到最后。而 reduceRight()则从数组的最后一项开始,向前遍历到第一项

    var arr = [7, 2, 29, 4];
    var sum = arr.reduce((prev, next, index, array) => prev + next)
    console.log('reduce', sum)

    var arr = [7, 2, 29, 4];
    var sum = arr.reduceRight((last, before, index, array) => last + before)
    console.log('reduceRight', sum)

四、递归方法

    function sum(arr) {
        var len = arr.length;
        if (len == 0) {
            return 0
        } else if (len == 1) {
            return arr[0]
        } else {
            return arr[0] + sum(arr.slice(1))
        }
    }
    console.log(sum([1, 2, 3, 4]))
总结:for循环最快,注意要把len先存储下来,归并最便捷,eval最简洁但是耗性能且慢

性能比较:https://www.cnblogs.com/faithZZZ/p/7063952.html

上一篇 下一篇

猜你喜欢

热点阅读