.map 返回数组中的字符串而不是数字数组
.map returning string in array instead of array of numbers
尝试使用我发现的一些代码,结果对我来说没有意义。
我不明白为什么 REPL 认为数组是一个长字符串值。我没有做任何事情来表明这是一个字符串,我想知道为什么控制台会给我以下结果。
F = (...x) => x.map(v => x+1)
//ACTUAL
F([1,2,3]) //["1,2,31"]
//EXPECTED
F([1,2,3]) //[2,3,4]
var F =(...x) => x.map(v => x+1)
var result = F([1,2,3]);
console.log(result);
你犯了两个错误。
- 您正在使用 Rest 参数,但您传递的是一个数组。
- 您正在添加到数组
x
并将通过使用 +
转换为 string
。你returnv+1
const F=(x) => x.map(v => v+1)
console.log(F([1,2,3]))
如果您想使用 Rest 参数,只需将 1
、2
、3
作为单独的参数传递即可。
const F=(...x) => x.map(v => v+1)
console.log(F(1,2,3))
您将数组作为参数传递,因为您使用 Rest parameter 作为函数参数,x
的值将变为 [[1,2,3]]
。现在,当您使用地图时,在第一次迭代中 v
将是 [1,2,3]
并且 [1,2,3] + 1
将导致字符串连接,因为 [1,2,3]
不是数字,而 [1,2,3]
转换为字符串,它会产生一个带有逗号分隔值的字符串。
所以要么将参数作为多个参数传递,要么使用一个简单的参数。
喜欢:
function F(x){ return x.map(v => x+1) }
或调用如下函数:
F(1, 2, 3)
// or
F(...[1, 2, 3])
您正在寻找 F = x => x.map(v => v+1)
,因此...
F([1,2,3]) == [2, 3, 4] # evaluates to true
不需要扩展语法。函数 F
应该只接受一个数组,这样它 returns 就是 [1,2,3].map(v => v+1)
的结果。您有 x.map(v => x+1)
,它没有使用传递给 .map()
函数的函数的 v
参数。
尝试使用我发现的一些代码,结果对我来说没有意义。
我不明白为什么 REPL 认为数组是一个长字符串值。我没有做任何事情来表明这是一个字符串,我想知道为什么控制台会给我以下结果。
F = (...x) => x.map(v => x+1)
//ACTUAL
F([1,2,3]) //["1,2,31"]
//EXPECTED
F([1,2,3]) //[2,3,4]
var F =(...x) => x.map(v => x+1)
var result = F([1,2,3]);
console.log(result);
你犯了两个错误。
- 您正在使用 Rest 参数,但您传递的是一个数组。
- 您正在添加到数组
x
并将通过使用+
转换为string
。你returnv+1
const F=(x) => x.map(v => v+1)
console.log(F([1,2,3]))
如果您想使用 Rest 参数,只需将 1
、2
、3
作为单独的参数传递即可。
const F=(...x) => x.map(v => v+1)
console.log(F(1,2,3))
您将数组作为参数传递,因为您使用 Rest parameter 作为函数参数,x
的值将变为 [[1,2,3]]
。现在,当您使用地图时,在第一次迭代中 v
将是 [1,2,3]
并且 [1,2,3] + 1
将导致字符串连接,因为 [1,2,3]
不是数字,而 [1,2,3]
转换为字符串,它会产生一个带有逗号分隔值的字符串。
所以要么将参数作为多个参数传递,要么使用一个简单的参数。
喜欢:
function F(x){ return x.map(v => x+1) }
或调用如下函数:
F(1, 2, 3)
// or
F(...[1, 2, 3])
您正在寻找 F = x => x.map(v => v+1)
,因此...
F([1,2,3]) == [2, 3, 4] # evaluates to true
不需要扩展语法。函数 F
应该只接受一个数组,这样它 returns 就是 [1,2,3].map(v => v+1)
的结果。您有 x.map(v => x+1)
,它没有使用传递给 .map()
函数的函数的 v
参数。