在MDN看到的一个例子,新手前端有点儿看不懂,希望有人可以稍微指点一下?functioncombine(){letarr=[].concat.apply([],arguments);//没有去重复的新数组returnArray.from(newSet(arr));}varm=[1,2,2],n=[2,3,3];console.log(combine(m,n));//[1,2,3]主要是combine(m,n)这里有点不大明白参数是怎么传入函数的?还有letarr=[].concat.apply([],arguments)这里也不大明白实现原理以及为什么不直接[...newSet(arr)]来进行数组去重啊?上面的方法比这种要好在哪里呢?
2 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
combine函数没有定义参数,是直接从arguments里面取的,这样更具灵活性,同样也会让调用者不明白这个函数的到底应该怎么传参,这个还是看自己怎么取舍吧。使用arguments,你可以传入多个数组,不限制于参数列表。[].concat.apply([],arguments),是因为arguments不是数组,只算是个类数组,使用使用apply的方法,将参数里面的多个数组进行concat合并。最后通过newSet(arr)对数组去重,出重完成后返回的值也是类数组,所以再加一层Array.from,保证最后输出的是数组形式。不知道这样讲,你没有清楚。
添加回答
举报
0/150
提交
取消