我试图写一个函数在阵列加起来的最大的一笔,将发现号的哪个集合,并把这个数字到新阵列:查找具有最大总和(JavaScript)的数字
var num = ['267453', '345678', '876787'];
var newArray = [];
我真的在这里感到茫然,不知道如何开始解决这个问题。
有人可以帮助我脱下右脚吗?
我试图写一个函数在阵列加起来的最大的一笔,将发现号的哪个集合,并把这个数字到新阵列:查找具有最大总和(JavaScript)的数字
var num = ['267453', '345678', '876787'];
var newArray = [];
我真的在这里感到茫然,不知道如何开始解决这个问题。
有人可以帮助我脱下右脚吗?
遍历字符串,拆分到数字求和数字
var arrayLength = num.length;
var sums = []
for (var i = 0; i < arrayLength; i++) {
var digitsAsChar = num[i].split("");
var tmpSum=0;
var digitsLength = digitsAsChar.length;
for(var y=0; y<digitsLength;y++){
tmpSum = tmpSum+parseInt(digitsAsChar[y]);
}
sums.push(tmpSum)
}
finaly对数组进行排序:
sums.sort():
如果我正确理解你的问题,你可以很容易地实现这一点。
var num = ['267453', '345678', '876787'];
var max = -Infinity;
var maxi = 0;
num.forEach(function (el, i) {
var n = el.split('').reduce(function (a, b) {
return parseInt(a,10) + parseInt(b,10);
});
if (n > max) {
max = n;
maxi = i;
}
})
console.log(max); //43
console.log(num[maxi]); //"876787"
关于性能,这就要求parseInt
的次数比严格意义更大,如果速度是你可能要考虑第一解析和总结分开的问题。
var num = ['267453', '345678', '876787'];
var sums =[];
num.forEach(function (el) {
string = el.split(''); //split into individual characters
var sum = 0; //have a storage ready
for (var i = 0; i < string.length; i++) { //iterate through
sum += parseInt(string[i],10); //convert from string to int
}
sums.push(sum);
}
Array.prototype.max = function() {
return Math.max.apply(null, this);
};
alert("Max value is: "+sums.max());
这里是小提琴为此:
var num = ['267453', '345678', '876787'];
var newArray = [];
var html = '';
for(var n=0; n<num.length; n++) {
var len = num[n].length;
count = 0;
for(var i=0; i<len; i++) {
count += parseInt(num[n].substring(i,i+1));
//console.log(count);
}
var temp1 = parseInt(num[n]);
newArray.push(count);
}
newArray = newArray.sort();
newArray = newArray.reverse();
var max = newArray[0];
是每个字符串的集合,还是每个字符串的数字? – Etai 2015-03-25 07:53:54
您可能需要迭代数组,将每个数字字符串拆分为其数字,然后将它们相加。将它们添加到数组中,最后对数组进行排序。 – bwright 2015-03-25 07:55:01
每个字符串是一个数字 – 2015-03-25 07:55:55