关于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 做值拷贝,就会不断被修改
022020-03-12
相似问题