查找总和最大的数字(Javascript)

时间:2015-03-25 07:51:34

标签: javascript

我正在尝试编写一个函数,该函数将查找数组中哪个数字集合加起来为最大值,并将该数字放入新数组中:

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

我实际上在这里不知所措,不知道如何开始解决这个问题。
有人可以帮助我让你从右脚起飞吗?

4 个答案:

答案 0 :(得分: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());

答案 1 :(得分: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超过严格必要的次数,如果速度有问题,您可能需要先考虑解析并单独求和。

答案 2 :(得分: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)
}

最后对数组进行排序:

sums.sort():

答案 3 :(得分: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/