Какая функция вызывается с использованием задания деструктуризации массива? - PullRequest
0 голосов
/ 07 апреля 2020

let [x, y] = ["Ele", "Stack"].reduce((a, s) => {
  a.x = s;
  a.y = s;
  return a;
}, { x: {}, y: {}});

Приведенный выше фрагмент кода выдает ошибку, потому что пытается создать массив для присвоения объекта (ключ: значение).

I есть недостаток знаний

Какая функция вызывается с использованием назначения деструктуризации массива?

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Я думаю, что вы получаете ошибку этого типа, потому что деструктуризация массива неявно вызывает Array[Symbol.iterator], который не определен, так как вы на самом деле возвращаете объект, а не массив, из reduce(). Исправление состоит в том, чтобы заменить его разрушением объекта

let {x, y} = ["Ele", "Stack"].reduce((a, s) => {
  a.x = s;
  a.y = s;
  return a;
}, { x: {}, y: {}});
console.log({ x, y })
0 голосов
/ 07 апреля 2020

Деструктуризация array работает так, как будто она берет индекс массива и помещает его в заданные вами переменные.

Например, скажем, массив -

const arr = [1, 2, 3, 4, 5];

Теперь Вы хотите разложить элементы массива на переменные.

const [a, b] = arr;

Это приведет к тому, что значение будет arr[0] в a и arr[1] в b. Таким образом, вы можете назначить столько, сколько хотите.

Если вы хотите поместить два индекса в две переменные, а остальные элементы в другой массив, вы делаете это с помощью оператора расширения, как этот -

const [a, b, ...rest] = arr;

Здесь a принимает значение arr[0], а b принимает элемент arr[1], а rest переводит остальные элементы в массив rest. Таким образом, массив rest будет иметь вид

[3, 4, 5]

Надеюсь, это поможет вам.

...