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