arguments如何转成数组?
函数中的 arguments 是一个对象,不是一个数组,严格来说它是一个类数组对象。
1、调用数组的原型方法来转换
var foo = function(a,b){
var arr = Array.prototype.slice.call(arguments);
console.log(arr)
}
foo(1,2) //(2) [1, 2]
2、使用ES6的新语法 Array.from()
来转换
Array.from
方法用于将两类对象转为真正的数组:类似数组的对象和可遍历对象(包括Set和Map)。
var foo = function(a,b){
var arr = Array.from(arguments);
console.log(arr)
}
foo(1,2) // (2) [1, 2]
3、使用 for
使用 for 循环挨个将 arguments 对象中的内容复制给新数组中
function toArray(){
var args = [];
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
return args;
}
4、利用 ES6 中的 rest 参数转换
let a = (…args) => args;