在使用切片和扩展运算符后,使用数字将字符串转换为数组副本中的数字

Use Number to convert string to numbers in a copy of an array after using slice and spread operator

我无法找到确切的解决方案,甚至找不到可能的解决方案。 我有一个示例数组,我不会使用前两个值,我想使用 Number() 将这些字符串转换为数字,并使用扩展运算符一次性转换每个值。

let array = ['1','2','3','4','5','6']
let result = Number(...array.splice(2));

结果是 3 有没有办法使用展开运算符?或者唯一的出路是使用地图。

预期结果是 result = [3,4,5,6] 所以只有数字。字符串数组只是一个例子,里面可能有更多或更少的字符串。

一种可能的解决方案是对数组进行切片(删除前两个元素),然后进行映射,将数字从字符串转换为数字:

let array = ['1','2','3','4','5','6']
let result = array.slice(2, array.length)
let numbers = result.map(el=>Number(el))
console.log(numbers)

您可以选择使用 splice,但您不想要这样的结果。您只想 运行 删除前 2 个值。然后将剩余的值映射到一个数字数组就可以了。

let array = ['1','2','3','4','5','6'];
array.splice(0, 2); // splice will remove indexes 0 and 1
let result = array.map(n => +(n)); // map the remaining values to numbers
console.log(result);

Number 构造函数将一个值转换为数字 - Number(value)

您正在将一个展开的数组作为值,从中获取第一个值并进行转换

Number(...array.splice(2))  // Number('3','4','5','6') => 3

我没有看到任何使用展开运算符的好例子,因为你不想摆脱数组结构,但必须迭代数组以将每个元素从字符串转换为数字

  1. 要删除前两个条目 而不改变原始数组 使用 .slice() 第二个参数可以省略,如果你想从索引到数组末尾切片
  2. 为了简短起见,您可以使用 Number(v) 构造函数或简单地在前面添加 + 直接映射到拼接数组上
let array = ['1','2','3','4','5','6']
let numbers1 = array.slice(2).map(str => +str) // [3, 4, 5, 6]
let numbers2 = array.slice(2).map(str => Number(str)) // [3, 4, 5, 6]