JS之Array.slice()方法
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),效果一样滴-_-
JS之Array.slice()方法的更多相关文章
- js中Array对象方法详解
操作方法:concat() slice() splice() concat()方法可以基于当前数组中的所有项创建一个新数组.具体来说,这个方法会创建当前数组一个副本,将接收到参数添加到副本的末尾,最后 ...
- 兼容低版本JS的Array.map方法
前几天去别的公司面试遇到个这样的问题,兼容IE7下的Array.map方法,一脸蒙蔽.后面回来查了下资料发现.Array.map方法是ECMA-262 标准中新添加的方法,在低版本的JS中是木有的. ...
- JS 中 Array.slice() 和 Array.splice()方法
slice slice()就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array: var arr = ['A', 'B', 'C', 'D', 'E ...
- js中Array数组的属性和方法
这是我自己整理出来的一些关于Array数组的属性和方法,即查即用. 1.Array.length属性:数组的项数组,始终返回0或者更大的值. 2.instanceof操作符:value instanc ...
- JS - Array.slice 与 Array.splice
1)Array.slice方法 1.1)接收两个参数: a:起始下标 b:结束下标 1.2)返回由a(包括)至b(不包括)的元素所组成的数组 ...
- js原生api之String的slice方法
我们在工作中可能会很少进行这样的思考,对于一些常用的原生api它是如何实现的呢,如果让我们去用js实现一个与原生api功能相同的函数我们该如何设计算法去实现呢? 为了巩固自己的编程技术和提高自己的编程 ...
- JS的splice()方法和slice()方法
在w3c school中描述如下: 定义和用法splice() 方法用于插入.删除或替换数组的元素.语法arrayObject.splice(index,howmany,element1,....., ...
- String方法,js中Array方法,ES5新增Array方法,以及jQuery中Array方法
相关阅读:https://blog.csdn.net/u013185654/article/details/78498393 相关阅读:https://www.cnblogs.com/huangyin ...
- js 字符串截取 substring() 方法、 substr() 方法、slice() 方法、split() 、join();
三种 js 截取字符串的方法: substring() 方法: substr() 方法: slice() 方法: 1.:substring() 方法:string.substring(from, to ...
随机推荐
- cocos2d ARCH_OPTIMAL_PARTICLE_SYSTEM这个未定义的问题
在新版本的cocos2d中ARCH_OPTIMAL_PARTICLE_SYSTEM已经被移除由 CCParticleSystemQuad取代 CCParticleSystem *test = [ARC ...
- 看看 JDK 8 给我们带来什么(转)
世界正在缓慢而稳步的改变.这次改变给我们带来了一个新模样的JDK7,java社区也在一直期盼着在JDK8,也许是JDK9中出现一些其他的改进.JDK8的改进目标是填补JDK7实现中的一些空白——部分计 ...
- linux下查看一个进程的启动时间和运行时间
使用 ps命令 :#ps -A -opid,stime,etime,args ps -A -opid,stime,etime,args 结果: root:src# ps -A -opid,stime, ...
- audio.js – 随时随地,播放 HTML5 的声音
audio.js是一个HTML5标签的简易包装.但它不仅在支持HTML5的浏览器上能够轻松调用标签,并在不支持HTML5的浏览器上也能通过Flash作为B计划使用.除此之外,audio.js所提供的界 ...
- meta标签的用法
meta是用来在HTML文档中模拟HTTP协议的响应头报文.meta 标签用于网页的<head>与</head>中,meta 标签的用处很多.meta 的属性有两种:name和 ...
- gnuplotx轴的logscale显示
假设数据是这样子的: gnuplot脚本如下: set terminal postscript eps color enhanced set log x set log y set format x ...
- NV OIT algorithm : Depth peeling is a fragment-level depth sorting technique
https://developer.nvidia.com/content/interactive-order-independent-transparency Correctly rendering ...
- ThinkPHP 源码分析之常量 IS_AJAX
在控制器中判断请求是否是通过 AJAX 提交,ThinkPHP(3.2.2)中在 ThinkPHP/Library/Think/App.class.php (Line:49) 中定义了常量 IS_AJ ...
- PHP 用QueryList抓取网页内容
http://www.cnblogs.com/wb145230/p/4716403.html 之前抓取网页数据都是用Java Jsoup,前几天听说用PHP抓更方便,今天就简单研究了一下,主要是用Qu ...
- Bootstrap页面布局9 - BS列表
列表: 无序列表(列表中项目内容没有固定的顺序), 有序列表(通常使用在一组有前后顺序的内容上), 描述列表(定义解释一组词汇) 无序列表: <ul> <li>Ueditor编 ...