簡體   English   中英

Javascript數組中最高6個值的總和

[英]Javascript sum of highest 6 values in an array

我有一個大約10個值的數組,我想知道是否有任何方法使用JS或JQuery來添加最高的6個值並得到總數。

這里:

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 填充 .reduce() 。)

更簡單的方法(顯然明白:))

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

編輯答案是為了避免@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小提琴演示

但是,對於那些可用的瀏覽器, reduce() 遠比這簡單得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM