2015-03-25 70 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/