关于iterator的问题

来源:7-4 flat函数设计

meimei1314

2019-11-17

您好,老师。以下是参照老师的代码实现的,里面除了flat函数直接返回数组result,没有按照老师的代码,使用result.join(’,’),其余的都跟老师的代码一样。

var arr = [1, 2, [3, [4, [5, 6]]]];
function flat( arr ) {
    var result = [ ];
    for (let item of arr) {
        result.push(item)
    }
    return result
}
console.log( flat( arr ) ) // [1, 2, [3, [4, [5, 6]]]]

老师,这是执行后的结构,没有平铺数组。关于这道题,我有2个疑问。麻烦老师,帮忙解答一下。
第一,原生JS提供,对数组使用join方法,可以转变为平铺的字符串的问题。
如果把返回结构中的join方法去掉,数组没办法平铺,还是之前的多层嵌套的数组,请问,老师的iterator方法能够实现数组平铺,是不是因为仅仅是最后的join方法呢?为何我去掉最后的join方法后,数组没办法平铺呢?
第二,concat合并数组的问题。
var arr = [ ].concat(this)中,为何使用concat合并数组呢?直接使用var arr = this;也可以,不是么?
麻烦老师,帮忙解答一下。

写回答

1回答

快乐动起来呀

2019-11-19

1、第一个很简单,用和不用效果不同,那不就是区别之处?

2、数组是引用类型,如果不是通过 [].concat 做值拷贝,就会不断被修改

0
2
RamirezNi
回复
meimei1314
同疑问···在视频里的代码··iterator一顿操作··没看懂到底目的是什么··iterator里的item项目本来是数字的还是数组反而好像核心的是join方法··后来课程资料里实现的一版getFirst方法就在递归了··完全不知道iterator引入的目的···难道只是为了让面试官知道自己了解iterator?···
2020-03-12
共2条回复

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

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

4836 学习 · 830 问题

查看课程