字符串中的整数之和 - JS

时间:2015-11-09 21:21:37

标签: javascript arrays function loops parameters

我是JS新手,我正在尝试找到解决方案:

  1. 我有一个包含三个电话号码的数组,我需要将每个电话号码字符串的整数相加。

  2. 返回最高位数字符串(电话号码)。

  3. 我很尴尬,因为我对JS知之甚少。我想在秋天进入学校学习。到目前为止,我已经完成了函数,for循环和while循环。

    var teach = ["111-222-3333", "333-444-5555", "959-232-8484"]
    

    我知道下一部分是错的,但这是我所学到的。有人可以帮帮我吗?

    var total = 0;    
    
    for(var i = 0; i < teach.length; i++){
       total = total + Number(teach[i]);
    }
    
    alert(total);
    

3 个答案:

答案 0 :(得分:2)

你在途中。你需要遍历字符串中的每个字母。

var largestTotal = 0;
var largestPhoneNumber;

for (var i=0; i < teach.length; i++) {
   var phoneNumber = teach[i];
   var phoneNumberTotal = 0;

   for (var i=0; i < phoneNumber.length; i++) {
      phoneNumberTotal += Number(phoneNumber.charAt(i));
   }

   if (phoneNumberTotal > largestTotal) {
      largestPhoneNumber = phoneNumber;
   }
}

alert(largestPhoneNumber);

您可以使用.charAt(i)来执行此操作,这将获得指定索引处的字母,有点像teach[i]访问该数组的特定元素。

答案 1 :(得分:1)

sumPhone计算某个手机中的数字总和,maxPhone找到最大值 replace( /\D/g, '' ) - 删除除数字以外的所有电话符号 split( '' ) - 将数字串拆分为数组 reduce(...) - 对数组进行sumarize。将每个数字转换为数字需要parseInt

var sumPhone = function( phone ) {
    return phone.replace( /\D/g, '' ).split( '' ).reduce( function( prev, current ) {
        return prev + parseInt( current );
    }, 0 );
};

var maxPhone = function( phones ) {
    var max_sum = 0,
        max_phone;

    phones.forEach( function( phone ) {
        var sum = sumPhone( phone );

        if ( max_sum < sum ) {
           max_sum = sum;
           max_phone = phone;
        }
    } );

    return max_phone;
};

maxPhone( ["111-222-3333", "333-444-5555", "959-232-8484"] );// returns "959-232-8484"

答案 2 :(得分:0)

你可以用很多这样的链接函数来做到这一点:

let integerSum = function(input) {
    return String(input).split("").map(s => Number(s)).filter(s => !isNaN(s)).reduce((a, b) => a + b, 0)
}