我試圖寫一個函數在陣列加起來的最大的一筆,將發現號的哪個集合,並把這個數字到新陣列:查找具有最大總和(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