Зачем распространять оператор, превращающий мой массив в числа - PullRequest
0 голосов
/ 27 сентября 2019

у меня есть

a = [[1,2,3],[4,5,6]]

Почему, когда я пишу

console.log(...a.shift()), это дает мне 1 2 3, но не 1,2,3 и [1, 2, 3] не можетКто-нибудь объяснит мне механизм этого?

Ответы [ 2 ]

2 голосов
/ 27 сентября 2019

a.shift() возвращает первый элемент массива, который является [1, 2, 3].Таким образом, ваш код эквивалентен:

console.log(...[1, 2, 3])

Синтаксис распространения приводит к тому, что каждый элемент массива становится отдельным аргументом, поэтому это эквивалентно

console.log(1, 2, 3)

, который печатает каждое число отдельнона консоли.

Чтобы получить [1, 2, 3], вы не должны использовать ..., просто напишите

console.log(a.shift())

Чтобы получить 1,2,3, используйте

console.log(a.shift().join(','))
0 голосов
/ 27 сентября 2019

console.log(...a.shift())

выполняется в указанном порядке:

  1. a.shift() возвращает [1, 2, 3] => console.log(...[1, 2, 3])
  2. ...[1, 2, 3] оцениваетсяв 1 2 3 и передается в console.log как 3 различных аргумента => console.log(1, 2, 3)

Который из 1 2 3

...