我是JS新手,我正在尝试找到解决方案:
我有一个包含三个电话号码的数组,我需要将每个电话号码字符串的整数相加。
返回最高位数字符串(电话号码)。
我很尴尬,因为我对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);
答案 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)
}