这里没搞懂?

来源: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()已经被修改成了用冒号隔开。

0
0

飞行的荷兰人

2019-03-17

flat 的扁平化数组的方式: reduce 和 concat 来实现的flat

0
1
慕神7088389
同学没听懂在说什么,能不能详细点?
2019-03-17
共1条回复

前端跳槽面试必备技巧 面试官全流程指导

一门让你能成功获取前端 Offer 的课程, 不只是技术,面试“技巧”也至关重要

4836 学习 · 830 问题

查看课程