gpt4 book ai didi

javascript - 将字符串中的数值相加

转载 作者:行者123 更新时间:2023-12-05 09:07:05 26 4
gpt4 key购买 nike

我有一个从端点返回的字符串,我需要将字符串的某些部分加在一起以产生两个不同的值。

示例响应:

149,226;147,226;146,224

现在我知道我可以使用一元加号运算符强制将字符串视为数字。

var num1 = '20',
num2 = '22';

var total = (+num1) + (+num2);

或者我可以像这样做一些转换

   var number1 = parseInt(num1);
var number2 = parseInt(num2);

var total = number1 + number2;

这些都可以正常工作,但这并不是我想要的。

我要取这个结果

149,226;147,226;146,224

然后将第一个出现者之前的所有数字相加,得到 (149, 147, 146) 以产生一个结果,然后将第二个出现者之后的所有数字相加 (226, 226, 224)。

我知道我可能需要某种正则表达式,我只是不知道是什么。

最佳答案

您可以只使用 string.split,两次,一次用于 ;然后再次为 ,.并将其放入 array.reduce。

例如。

var str = '149,226;147,226;146,224';


var result = str.split(';')
.reduce((a,v) => {
var vv = v.split(',');
a[0] += vv[0] | 0;
a[1] += vv[1] | 0;
return a;
}, [0, 0]);

console.log(result);

对于更通用的解决方案,可以处理任意数量的子字符串,例如。 1,2,3;4,5,6,还可以处理替代拆分类型,并处理额外的;

function sumStrings(str, outerSplit, innerSplit) {
return str.split(outerSplit || ';')
.filter(Boolean)
.reduce((a,v) => {
v.split(innerSplit || ',')
.filter(Boolean)
.forEach((v,ix) => {
a[ix] = (a[ix] | 0) + (v | 0);
});
return a;
}, []);
}

console.log(sumStrings(
'149,226;147,226;146,224'
));

console.log(sumStrings(
'149.226.201|147.226.112.|146.224.300|',
'|','.'));

//how about total of totals?
console.log(sumStrings(
'149,226;147,226;146,224'
).reduce((a,v) => a + v));
.as-console-wrapper {
min-height: 100%
}

关于javascript - 将字符串中的数值相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65309153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com