1.Array.slice(startIndex,endIndex);
返回由原始数组从startIndex到endIndex-1的元素构成的新数组;
startIndex:默认值0,如果startIndex是负数,则起点从数组的结尾开始,-1表示最后一个元素
endIndex:默认值16777215,如果省略该参数,则片段包括从数组中的startIndex到结尾,如果是负数,则从数组的结尾计数,-1表示数组的最后一个元素
startIndex的位置一定要在endIndex的左边,因为对原始数组的拾取元素是从左往右的
<script > var a = [1,2,3,4,5,6,7,8]; console.log(a.slice(1,4)); //2,3,4 console.log(a.slice(-2,4)); //空 console.log(a.slice(1,-3)); //2,3,4,5 console.log(a.slice(-4,-2)); //5,6 console.log(a.slice(-4,-5)); //空 </script>
2.将类数组转换成真正的数组
什么是类数组?只要你这个对象里面有length属性,你就可以对外声称自己是类数组。
类数组转换成数组是通过Array.prototype.slice.call(obj)来实现的。
举例:
<script > var obj = { length:3, 0:"aaa", 1:"bbb", "name":"pmx" } var arr = Array.prototype.slice.call(obj) console.log(arr); </script>
这里slice方法解析obj对象,并返回数组arr,arr中的length就是来自于obj中的length属性。slice会扫描obj对象中的属性名能作为索引数组下标的属性,比如这里的0,1。然后将符合的属性作为元素添加到新数组中。
<script > var obj = { length:5, 1:"aaa", 3:"ccc", 4:"bbb", "name":"pmx", 5:"ddd" } var arr = Array.prototype.slice.call(obj) console.log(arr); </script>
数组长度5,将obj对象中属性名小于5的键值对添加到新数组中
由于Array.prototype.slice目的是为了调用slice方法,我们可以[].slice.call(obj),效果一样滴-_-