javascript - 将展开数组映射到数字
问题描述
映射包含整数和字符串的数组时,我只想转换数字。
假设数组 ['55', 'abc'] 作为参数传递给函数。
如何使用扩展运算符并获得相同的结果?
“运行代码片段”并注意使用扩展运算符,55 不会转换为数字。
console.log(['55', 'abc'].map(val => isNaN(val) ? val : Number(val)))
console.log(...[['55', 'abc']].map(val => isNaN(val) ? val : Number(val)))
解决方案
如何使用扩展运算符并获得相同的结果?
你不能。Spread(这是语法,而不是运算符)不进行映射。它传播价值观。对于映射,请坚持使用map
(代码第一行中的内容)。(或者,如果您从类似数组的东西开始,但实际上不是数组,则可以使用Array.from
传入映射回调。但您在示例中的起点是实际数组。)
您的第二行不起作用的原因是您正在调用map
外部数组,该数组中有一个数组,所以val
回调中就是那个数组。isNaN(['55, 'abc'])
最终成为isNaN('55,abc')
这是true
因为'55,abc'
当转换为number
类型时是NaN
. 所以回调返回内部数组不变。
您的第一行创建了一个新数组,其中的值按照您希望它们的映射方式映射。
推荐阅读
- c++ - 为什么这段代码涉及使用对临时段错误的引用,尽管它似乎可以正确管理生命周期?
- json - 无法将新的键值对动态添加到 React App 中的状态 JSON 数组
- html - css flex-box 换行但避免区域
- node.js - 在 Visual Studio 2017 中调试 node.js
- sql-server - 有没有一种方法可以在表在 sql server 中获取记录时得到警报
- c# - 无法使用带有汉字 Json 数据的 Azure Active Directory B2C Graph API 创建新用户
- c# - 数据表 nopcommerce 3.80 中不存在所需的防伪表单字段“__RequestVerificationToken”
- wordpress - Google PageSpeed Insights API 集成
- ios - 如何将图标添加到操作表中的选项:iOS?
- c# - Datagridview DataView CellDoubleClick