我有一个大约10个值的数组,我想知道JS或JQuery是否有任何方法可以将最高的6个值相加并获得总数。
答案 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);
但是,对于那些可用的浏览器,reduce()
远,远更简单。