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

我需要计算包含数字和字符串的字符串中所有数字的总和,例如 ('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;

}

我在这里缺少什么?而且,如果您能分享其他解决此问题的方法,也许使用过滤器、映射或减少,我将不胜感激?或者也许我错过了其他一些方式。提前谢谢大家。

千巷猫影
浏览 148回答 3
3回答

陪伴而非守候

字符串的任何索引值也将是(一个字符长)字符串。我将.replace所有非数字字符都用空字符串,然后总结为reduce:function count(str) {&nbsp; return [...str.replace(/\D/g, '')]&nbsp; &nbsp; .reduce((a, b) => a + +b, 0);}console.log(count('abc123rv.rv1'));

慕田峪4524236

您可以尝试使用解析数字。如果它被解析然后添加它。function count(str) {&nbsp; let sum = 0;&nbsp; for (let i = 0; i < str.length; i++) {&nbsp; &nbsp; if (parseInt(str[i],10)){ sum += parseInt(str[i],10)}&nbsp; }&nbsp; return sum;}console.log(count('abc123rv.rv1kaushik221)'))

胡说叔叔

要遍历字符串,您必须将split()其转换为数组。然后将字符转换为数字并使用以下命令检查该字符是否不是数字isNaN():function count(str) {&nbsp; let sum = 0;&nbsp; str = str.split('');&nbsp; for (let i = 0; i < str.length; i++) {&nbsp; &nbsp; str[i] = Number(str[i])&nbsp; &nbsp; if (!isNaN(str[i])) sum += str[i]&nbsp; }&nbsp; return sum;}console.log(count('abc123rv.rv1'));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript