Javascript 将排列数组映射到数字
当映射包含整数和字符串的数组时,我只想转换数字 假设数组['55','abc']作为参数传递给函数 如何使用spread运算符并获得相同的结果 “运行代码片段”并注意使用spread运算符时,55不会强制转换为数字Javascript 将排列数组映射到数字,javascript,Javascript,当映射包含整数和字符串的数组时,我只想转换数字 假设数组['55','abc']作为参数传递给函数 如何使用spread运算符并获得相同的结果 “运行代码片段”并注意使用spread运算符时,55不会强制转换为数字 console.log(['55','abc'].map(val=>isNaN(val)?val:Number(val))) console.log(…['55',abc']].map(val=>isNaN(val)?val:Number(val))看起来您没有将其扩展到新数组中。
console.log(['55','abc'].map(val=>isNaN(val)?val:Number(val)))
console.log(…['55',abc']].map(val=>isNaN(val)?val:Number(val))
看起来您没有将其扩展到新数组中。下面给出了所需的结果
console.log(['55','abc'].map(val=>isNaN(val)?val:Number(val)))
console.log([…['55','abc']].map(val=>isNaN(val)?val:Number(val))
如何使用spread运算符并获得相同的结果
你不能。Spread(这是语法,不是运算符)不进行映射。它传播价值观。对于映射,请坚持使用map
(代码第一行中的内容)。(或者,如果您刚开始使用类似于数组的东西,而实际上不是数组,则可以使用array.from
传入映射回调。但您的示例中的起点是实际数组。)
第二行不起作用的原因是在外部数组上调用map
,外部数组中有一个数组,因此回调中的val
就是该数组isNaN(['55',abc'])
最后变成isNaN('55,abc')
,这是true
,因为'55,abc'
转换成数字时,类型是NaN
。因此回调函数返回的内部数组保持不变
您的第一行创建了一个新数组,其中的值按照您希望的映射方式进行映射。您希望使用spread运算符做什么?目标是什么?console.log(…array)
相当于console.log(array[0],array[1],…,array[length-1])
将map
返回的数组的每一项作为参数传递给console.log
。第二个示例的数组包含数组,而不是包含整数和字符串的数组。你是说console.log(…['55',abc'].map(…)
?console.log(…['55',abc']].map(val=>isNaN(val)?val:Number(val))
在这里,你的val
将是['55',abc']
。所以,它是正确的。您是否正在尝试执行[[['55','abc']].flat().map(…)
?您永远不应该将数组文字分散到数组文字中。“这是没有必要的。”Bergi我同意,我的假设是OP使用了数组文字来让问题更容易理解。这并不是实际的代码。这是真的,我没有最简单的方法来操作传入的数组,但它可能是最好的/唯一的路由