乱搞一些JavaScript以及我认为应该产生的错误发生了按预期的方式解决。 [].join()
似乎压扁了任何深度的嵌套数组。
var arr = [['a'], ['b'], ['c']];
arr.join('-'); // => 'a-b-c'
即使var arr = [['a'], [[[[[[[[['b']]]]]]]]], ['c']];
也会返回与上面完全相同的结果。
这特别奇怪,因为它返回对象的预期(错误)行为:
var arr = [{}, {}, {}];
arr.join('-'); // => '[object Object]-[object Object]-[object Object]'
如果这是最新的chrome(53.0.2785.116),故意或错误的功能,我很好奇吗?
答案 0 :(得分:1)
对于要连接的数组中的每个元素,首先发生的是元素被强制转换为字符串。像
这样的东西[[[[["b"]]]]]
强制转换为字符串时只是
"b"
因此,当您进行连接时,组合元素将被强制为字符串,然后连接过程会将元素粘合在一起。
答案 1 :(得分:0)
这是toString
上['a']
行为导致'a'
的默认[['a']].toString()
行为的结果。因此,'a'
也会产生['a', 'b'].toString()
。在控制台中玩这个应该清楚这一点。如果您的数组有多个元素,您会看到差异,因为'a,b'
会产生{}
。