首先說說什麼是類數組:數組
1.擁有length屬性,其它屬性(索引)爲非負整數(對象中的索引會被當作字符串來處理,這裏你能夠當作是個非負整數串來理解),app
2.不具備數組所具備的方法,spa
好比:argumentsprototype
將相似數組的對象轉化成真正的數組的方法:code
方法一:對象
var arr = Array.prototype.slice.apply(arguments); 或 var arr = Array.prototype.slice.call(arguments);blog
<script> var aa = function(a, b, c, d){ var arr1 = Array.prototype.slice.apply(arguments); var arr2 = Array.prototype.slice.apply(arguments); console.log(arguments instanceof Array); //false console.log(arr1); //[1, 2, 3, [1, 2, 3]] console.log(arr1 instanceof Array); //true console.log(arr2); //[1, 2, 3, [1, 2, 3]] console.log(arr2 instanceof Array); //true }; aa(1,2,3,[1,2,3]); </script>
方法二:索引
var kong = [];ip
var arr = Array.prototype.concat.apply(kong, arguments);字符串
注意這種方式的特色和其餘的區別
<script> var aa = function(a, b, c, d){ var kong = []; var arr1 = Array.prototype.concat.apply(kong, arguments); console.log(arguments instanceof Array); //false console.log(arr1); //[1, 2, 3, 1, 2, 3] console.log(arr1 instanceof Array); //true }; aa(1,2,3,[1,2,3]); </script>
方法三:
var kong = [];
var arr = Array.apply(kong, arguments);
<script> var aa = function(a, b, c, d){ var kong = []; var arr = Array.apply(kong, arguments); console.log(arguments instanceof Array); //false console.log(arr); //[1, 2, 3, [1, 2, 3]] console.log(arr instanceof Array); //true }; aa(1,2,3,[1,2,3]); </script>
方法四:
比較好理解的即是for循環了。
<script> var aa = function(a, b, c, d){ var arr = [], i = 0, len = arguments.length; for(; i < len; i++){ arr[i] = arguments[i]; } console.log(arguments instanceof Array); //false console.log(arr); //[1, 2, 3, [1, 2, 3]] console.log(arr instanceof Array); //true }; aa(1,2,3,[1,2,3]); </script>
方法五:
var arr = Array.from(arguments); 這是ES6新增長的方法
<script> var aa = function(a, b, c, d){ var arr = Array.from(arguments); console.log(arguments instanceof Array); //false console.log(arr); //[1, 2, 3, [1, 2, 3]] console.log(arr instanceof Array); //true }; aa(1,2,3,[1,2,3]); </script>
方法六:
var arr = [...arguments]; 這也是ES6新增的擴展運算符
<script> var aa = function(a, b, c, d){ var arr = [...arguments]; console.log(arguments instanceof Array); //false console.log(arr); //[1, 2, 3, [1, 2, 3]] console.log(arr instanceof Array); //true }; aa(1,2,3,[1,2,3]); </script>