为了账号安全,请及时绑定邮箱和手机立即绑定

需要为字符串中的数字总和提供资金,不包括带有 for 循环的字符串

需要为字符串中的数字总和提供资金,不包括带有 for 循环的字符串

千巷猫影 2021-10-21 13:08:00
我需要计算包含数字和字符串的字符串中所有数字的总和,例如 ('abc123rv.rv1')。我创建了一个 forLoop 并使一切变得清晰,但由于某种原因它不起作用。function count(str) {  let sum = 0;  for (let i = 0; i < str.length; i++) {    if (typeof str[i] === 'number') sum += str[i]  }  return sum;}我在这里缺少什么?而且,如果您能分享其他解决此问题的方法,也许使用过滤器、映射或减少,我将不胜感激?或者也许我错过了其他一些方式。提前谢谢大家。
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

字符串的任何索引值也将是(一个字符长)字符串。


我将.replace所有非数字字符都用空字符串,然后总结为reduce:


function count(str) {

  return [...str.replace(/\D/g, '')]

    .reduce((a, b) => a + +b, 0);

}

console.log(count('abc123rv.rv1'));


查看完整回答
反对 回复 2021-10-21
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

您可以尝试使用解析数字。如果它被解析然后添加它。


function count(str) {

  let sum = 0;


  for (let i = 0; i < str.length; i++) {

    if (parseInt(str[i],10)){ sum += parseInt(str[i],10)}


  }


  return sum;

}


console.log(count('abc123rv.rv1kaushik221)'))


查看完整回答
反对 回复 2021-10-21
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

要遍历字符串,您必须将split()其转换为数组。然后将字符转换为数字并使用以下命令检查该字符是否不是数字isNaN():


function count(str) {

  let sum = 0;

  str = str.split('');

  for (let i = 0; i < str.length; i++) {

    str[i] = Number(str[i])

    if (!isNaN(str[i])) sum += str[i]

  }


  return sum;

}

console.log(count('abc123rv.rv1'));


查看完整回答
反对 回复 2021-10-21
  • 3 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信