Javascript数组中最高6个值的总和

时间:2012-08-18 15:29:40

标签: javascript jquery arrays sum

我有一个大约10个值的数组,我想知道JS或JQuery是否有任何方法可以将最高的6个值相加并获得总数。

4 个答案:

答案 0 :(得分:8)

下面:

var top6Total = arr
                .map(function (v) { return +v; })
                .sort(function (a,b) { return a-b; })
                .slice( -6 )
                .reduce(function (a,b) { return a+b; });

现场演示: http://jsfiddle.net/bPwYB/

(注意:对于IE8,您必须polyfill .reduce()。)

答案 1 :(得分:5)

更简单的方法(显然要明白:))

var arr = [1,2,3,4,5,6,7,8,9,10]; // your array

arr = arr.sort(function (a,b) { return a - b; });

var sum=0;
for(var i=0;i<6;i++) {
sum+=arr[i];
}

alert(sum);

答案 2 :(得分:1)

var sortedArr = arr.sort(function (a,b) { return b - a; });
var sum = 0;
for (var i = 0; i < 6; i++)
    sum += sortedArr[i];

答案 3 :(得分:1)

编辑答案以避免@pimvdb标识的'覆盖功能结果'的问题,并由@some解释(在下面的评论中)。

应该涵盖几乎所有浏览器的简单方法(我认为)是使用函数来对数组值求和:

var vals = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function arraySum(arr) {
    if (!arr) {
        return false;
    }
    else {
        var sum = 0;
        for (var i = 0, len = arr.length; i < len; i++) {
            sum += arr[i];
        }
        return sum;
    }
}
sum = arraySum(vals.sort(function(a, b) {
    return b - a;
}).slice(0, 6));

console.log(sum);​

JS Fiddle demo

但是,对于那些可用的浏览器,reduce()远,更简单。