2015-03-25 44 views
-1

我试图写一个函数在阵列加起来的最大的一笔,将发现号的哪个集合,并把这个数字到新阵列:查找具有最大总和(JavaScript)的数字

var num = ['267453', '345678', '876787']; 
var newArray = []; 

我真的在这里感到茫然,不知道如何开始解决这个问题。
有人可以帮助我脱下右脚吗?

+0

是每个字符串的集合,还是每个字符串的数字? – Etai 2015-03-25 07:53:54

+1

您可能需要迭代数组,将每个数字字符串拆分为其数字,然后将它们相加。将它们添加到数组中,最后对数组进行排序。 – bwright 2015-03-25 07:55:01

+0

每个字符串是一个数字 – 2015-03-25 07:55:55

回答

0

遍历字符串,拆分到数字求和数字

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():

0

如果我正确理解你的问题,你可以很容易地实现这一点。

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的次数比严格意义更大,如果速度是你可能要考虑第一解析和总结分开的问题。

3
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()); 
0

这里是小提琴为此:

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]; 

https://jsfiddle.net/o6mryk1q/1/