在数组中使用 Rest 运算符进行解构:将数组元素作为变量并在 JavaScript 中捕获剩余数组

Destructuring with Rest Operator in Array: Grabbing Array elements as variables as well as capturing remaining array in JavaScript

我希望获取数组 (sourceArr) 中的前两个位置并将它们分配给变量(此处代码中的 p & k)。使用 rest 运算符在另一个数组结果中给我数组的其余部分 (arr19)。这段代码似乎可以很好地抓住其余部分。但是得到一个 "Uncaught ReferenceError: p is not defined" 因为我试图抓住初始位置作为变量。

关于我做错了什么的任何提示!我认为 const [ p, k, ...arr19] = listMe 会定义 p 和 k ???

const sourceArr = [1,2,3,4,5,6,7,8,9,10]
function reassignFirstTwo(listMe) {
  const [ p, k, ...arr19] = listMe  // the p & k variables are grabbed, followed by the REST dots (...) to grab the remaining array elements.
  return (p)
  return (k)
  return arr19
}
const arr19 = reassignFirstTwo(sourceArr)
console.log(arr19)  // This gives the resulting array with the elements removed
console.log(sourceArr)  // This gives the original array
console.log(p)
console.log(k)

函数中的第一个 return 仅 returns 1p 变量值,并在退出时跳过接下来的两个 returns功能。

pk 的作用域是函数 reassignFirstTwo,因此您无法在该函数之外访问它。您正尝试在全球范围内访问,因此您得到 Uncaught ReferenceError: p is not defined.

您可以 return 三个变量作为 reassignFirstTwo 函数中的一个对象,然后在您调用它的地方解构它以获取变量 arr19, p, k (新变量)使用对象解构技术:

const sourceArr = [1,2,3,4,5,6,7,8,9,10]
function reassignFirstTwo(listMe) {
  const [ p, k, ...arr19] = listMe;  
  return {p, k, arr19}
}
const { arr19, p, k } = reassignFirstTwo(sourceArr)
console.log({arr19, sourceArr, p, k});