Javascript 这些数字是连在一起的,而不是加起来的

Javascript 这些数字是连在一起的,而不是加起来的,javascript,typescript,Javascript,Typescript,我对“reduce”函数没有什么问题 let array = [ 0: "720" 1: "1080" ] array.reduce((a,b) => a + b) 有问题,这个返回给我7201080,但是我需要1800你需要在number数组中转换字符串。reduce((a,b)=>+a++b)为reduce回调函数提供初始值0,并使用number()将字符串转换为数字。 let数组=[ "720", "1080" ] console.log(array.reduce((a,

我对“reduce”函数没有什么问题

let array = [
  0: "720"
  1: "1080"
]
array.reduce((a,b) => a + b)

有问题,这个返回给我
7201080
,但是我需要
1800
你需要在number
数组中转换字符串。reduce((a,b)=>+a++b)
为reduce回调函数提供初始值
0
,并使用
number()将字符串转换为数字。

let数组=[
"720",
"1080"
]

console.log(array.reduce((a,b)=>a+Number(b,0))
您说您的问题是(boldemphasis):

数字被合并,而不是相加

但事实并非如此,这也不是你的问题

真正的问题是代码中没有s。只有s,字符串的二进制中缀运算符是:
“A”+“b”==“Ab”//not 21

解决问题的“最佳”方法是在源代码处解决问题,这样首先就可以使用数字而不是字符串:

const数组=[
720,
1080
];
log(array.reduce((a,b)=>a+b));

//1800
@B4UTR3N最好在reduce,
数组中设置initialValue。reduce((a,b)=>+a++b,0)
。在这种情况下,您不需要将a转换为数字,因为它总是数字
数组。reduce((a,b)=>a++b,0)
提示:代码中没有数字。