Разрушение с помощью оператора Rest в массиве: захват элементов массива в качестве переменных, а также захват оставшегося массива в JavaScript - PullRequest
1 голос
/ 24 марта 2020

Я хочу получить первые две позиции в массиве (sourceArr) и назначить их переменным (p & k в коде здесь). Использование оператора rest дает мне остаток массива (arr19) в другом результате массива. Этот код, кажется, работает, чтобы захватить остаток просто отлично. Но получите «Uncaught ReferenceError: p не определено» для моей попытки захватить начальные позиции как переменные.

Любые намеки на то, что я делаю неправильно! Я думал, что 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)

1 Ответ

0 голосов
/ 24 марта 2020

Первый return в вашей функции возвращает только значение переменной p, равное 1, и пропускает следующие два возврата при выходе из функции.

p и k относятся к функции reassignFirstTwo, поэтому вы не можете получить к ней доступ вне этой функции как таковой. К которому вы пытаетесь обратиться глобально, поэтому вы получаете Uncaught ReferenceError: p is not defined.

. Вы можете вернуть три переменные как объект из функции 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});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...