JS截取数组后用扩展运算符配合Number批量转数字的实现方法
原代码错误原因
Number() 构造函数仅支持接收单个参数做转换,你将 array.splice(2) 返回的 ['3','4','5','6'] 用扩展运算符展开后,相当于给 Number() 传入了4个独立参数,函数只会取第一个参数做转换,因此最终只返回3。
需求实现说明
仅靠扩展运算符无法实现需求,扩展运算符的作用是将数组展开为独立的参数序列,本身不具备逐个转换元素类型的能力,必须配合遍历类方法使用。
最简洁的实现方式是用 map() 方法,可根据是否需要修改原数组选择搭配 splice 或 slice:
- 若允许修改原数组(删除原数组前两个元素):
let array = ['1','2','3','4','5','6'] let result = array.splice(2).map(Number)
- 若不希望修改原数组:
let array = ['1','2','3','4','5','6'] let result = array.slice(2).map(Number)
两种写法最终得到的 result 都是 [3,4,5,6] 格式的纯数字数组。
如果非要结合扩展运算符实现,可以搭配 Array.from() 方法,不过实际写法冗余,没有必要:
let result = Array.from([...array.splice(2)], Number)
内容的提问来源于stack exchange,提问作者JoseI
相关产品推荐
相关产品推荐

