JS数组销毁-如何提供此输出?

时间:2018-12-21 08:03:44

标签: javascript ecmascript-6 destructuring

代码输出:

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 :(得分:2)

Here是对应用于数组的+运算符的解释。那么会发生什么:

  1. arr + []给您一个字符串"1,2,3,4,5"
  2. 然后,使用扩展语法将该字符串扩展/分割为该字符串的字符数组。

答案 1 :(得分:1)

添加Nurbol的答案

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

它将变成一个字符串,数组中的每个元素都将其转换为字符串。由于逗号也在此处,因此它将成为字符串数组的元素。

当您这样做时

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

它将创建该数组的单个字符串,然后创建一个指定分割点的字符串数组。

答案 2 :(得分:0)

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]生成结果