function toarray(){
console.log(arguments);
//法1
var x=[].slice.apply(arguments);
console.log(x)
//法1變形
var y=Array.prototype.slice.apply(arguments)
console.log(y)
//法1用call替換apply
var z=Array.prototype.slice.call(arguments)
console.log(z)
//法2,遍歷arguments郁岩,入數(shù)組
var arr=[];
for(var i=0;i<arguments.length;i++){
arr.push(arguments[i]);
}
console.log(arr)
//法3
var m=Array.from(arguments);
console.log(m)
//法4
var xx=[...arguments]//...相當(dāng)于遍歷抢呆,[]相當(dāng)于添加到數(shù)組琢感,同法2
console.log(xx)
}
toarray(1,2,3,4)
輸出
NodeList轉(zhuǎn)數(shù)組
一下代碼主要是為Nodelist轉(zhuǎn)換為數(shù)組準(zhǔn)備的,在IE8及更早的版本糕殉,NodeList實(shí)現(xiàn)是一個(gè)COM對象亩鬼,使用Array.prototype.slice.apply(nodes)
會(huì)導(dǎo)致錯(cuò)誤殖告,必須使用遍歷
function convertToArray(nodes) {
var arr = null
try {
arr = Array.prototype.slice.apply(nodes)
} catch (ex) {
var len = nodes.length
arr=[]
for (var i = 0; i < len; i++) {
arr.push(nodes[i])
}
}
return arr
}
測試
//html
<div id="fight">加油</div>
//js
function convertToArray(nodes) {
var arr = null
try {
arr = Array.prototype.slice.apply(nodes)
} catch (ex) {
var len = nodes.length
arr=[]
for (var i = 0; i < len; i++) {
arr.push(nodes[i])
}
}
return arr
}
var x = convertToArray(c)
console.log(x)//[text]
console.log(Object.prototype.toString.apply(x))//[object Array]