我在应用程序中有一些逻辑,生成如下字符串:
"001"
"021"
"031"
我想取单个字符串并将其拆分并以基本有效的方式添加数字。
例如,对于021
上面的第二个字符串 - 期望的结果将被拆分为使得总和0 + 2 + 1 = 3
- 我如何使用vanilla javascript按每个数字拆分字符串?
试试这个:
var array = "0123456";
var result = array.split("").reduce((acc, cur) => {return (+acc) + (+cur);},0);
console.log(result);
正如Bucket在评论中所说,这会将字符串分成字符,然后使用array.reduce()
将所有字符合并为一个值,使用箭头函数将它们转换为数字并对它们求和。
var str = "021";
var a = str.split(""); // converts the string into an array
var result = a.reduce((i, n) => {
return Number(i)+ Number(n)
},0);
console.log(result)
//result = 3
这可能与尽可能高效一样高效,但它不会进行任何输入验证:
var input = "0021031";
var zeroCode = "0".charCodeAt(0);
function sum(input) {
var result = 0;
for (var i = 0; i < input.length; ++i) {
result += input.charCodeAt(i) - zeroCode;
}
return result;
}
console.log(sum(input))
function mathAdd(s) {
// take input and split it by ''
// use a as the accumulator
// use v as the value
// add the value to the accumulator and start at 0
// return the value
return String(s).split('').reduce((a, v) => a + parseInt(v, 10), 0);
}
console.log(mathAdd("001"));
console.log(mathAdd("021"));
console.log(mathAdd("031"));
var result = 0;
var second = "021";
var arr = second.split("");
for(var i = 0; i < arr.length; i++)
result = +arr[i] + result;
console.log(result);