JS Array Destructing - Как это дает этот вывод? - PullRequest
0 голосов
/ 21 декабря 2018

Вывод кода:

const arr = [1, 2, 3, 4, 5];
console.log([...arr + []]);

дает

​​​​​[ '1', ',', '2', ',', '3', ',', '4', ',', '5' ]​​​​​

Я знаю, ...arr вернет элементы массива (как 1 2 3 4 5), а number + [] даст строку, но я действительно запутался, почему , был добавлен в выходной массив.

Это потому, что ...arr в console.log() оказывается [..."1, 2, 3, 4, 5" + []], в котором выходные данные одинаковы?

Или это какое-то волшебное объяснение, о котором я не знаю?

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

Добавление ответа Нурбола, когда вы делаете

const arr = [1, 2, 3, 4, 5];
console.log([...arr + []]);

Получится строка, в которой каждый элемент массива преобразует ее в строку.Поскольку запятая также здесь, значит, она будет элементом массива строк.

Когда вы сделаете это следующим образом

const arr = [1, 2, 3, 4, 5];
console.log((arr + []).split())

Создает одну строку этого массива, а затем вы создаете массив строк, определяющих точку разделения.

0 голосов
/ 21 декабря 2018

array.toString() добавляет , после каждого элемента

const a = [1, 2, 3, 4, 5]
console.log(a.toString())
// -> '1,2,3,4,5'
console.log([...a.toString()])
// -> [ '1', ',', '2', ',', '3', ',', '4', ',', '5' ]

[...aray + []] преобразует массив в строку, затем добавляет пустую строку и затем использует [...resultString] для построения результата

0 голосов
/ 21 декабря 2018

Здесь - это объяснение оператора +, применяемого к массивам.Так что происходит так:

  1. arr + [] дает вам строку "1,2,3,4,5"
  2. Затем эта строка распределяется / разбивается (с синтаксисом распространения) на массив символов:эта строка.
...