这里没搞懂?
来源:7-4 flat函数设计

慕神7088389
2019-03-16
var arr = ['a', ['b', 'c', [7, 8]], 2, ['d', 'e', 'f'], 'g', 3, 4]
function flat(arr) {
let toString = Array.prototype.toString
console.log(arr.join(';')); // a;b,c,7,8;2;d,e,f;g;3;4
Array.prototype.toString = function () {
return this.join(';')
}
let result = arr + '' // a;b;c;7;8;2;d;e;f;g;3;4
Array.prototype.toString = toString
return result
}
都是用join( ),为什么结果不一样呢?
写回答
2回答
-
深山小童
2019-05-11
因为第一次console.log的时候,默认toString()没有被修改,内层数组还要调用它,因此内层数组元素是逗号分隔。第二次console.log是因为,toString()已经被修改成了用冒号隔开。
00 -
飞行的荷兰人
2019-03-17
flat 的扁平化数组的方式: reduce 和 concat 来实现的flat
012019-03-17
相似问题