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()方法的更多相关文章

  1. js中Array对象方法详解

    操作方法:concat() slice() splice() concat()方法可以基于当前数组中的所有项创建一个新数组.具体来说,这个方法会创建当前数组一个副本,将接收到参数添加到副本的末尾,最后 ...

  2. 兼容低版本JS的Array.map方法

    前几天去别的公司面试遇到个这样的问题,兼容IE7下的Array.map方法,一脸蒙蔽.后面回来查了下资料发现.Array.map方法是ECMA-262 标准中新添加的方法,在低版本的JS中是木有的. ...

  3. JS 中 Array.slice() 和 Array.splice()方法

    slice slice()就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array: var arr = ['A', 'B', 'C', 'D', 'E ...

  4. js中Array数组的属性和方法

    这是我自己整理出来的一些关于Array数组的属性和方法,即查即用. 1.Array.length属性:数组的项数组,始终返回0或者更大的值. 2.instanceof操作符:value instanc ...

  5. JS - Array.slice 与 Array.splice

    1)Array.slice方法   1.1)接收两个参数:              a:起始下标              b:结束下标   1.2)返回由a(包括)至b(不包括)的元素所组成的数组 ...

  6. js原生api之String的slice方法

    我们在工作中可能会很少进行这样的思考,对于一些常用的原生api它是如何实现的呢,如果让我们去用js实现一个与原生api功能相同的函数我们该如何设计算法去实现呢? 为了巩固自己的编程技术和提高自己的编程 ...

  7. JS的splice()方法和slice()方法

    在w3c school中描述如下: 定义和用法splice() 方法用于插入.删除或替换数组的元素.语法arrayObject.splice(index,howmany,element1,....., ...

  8. String方法,js中Array方法,ES5新增Array方法,以及jQuery中Array方法

    相关阅读:https://blog.csdn.net/u013185654/article/details/78498393 相关阅读:https://www.cnblogs.com/huangyin ...

  9. js 字符串截取 substring() 方法、 substr() 方法、slice() 方法、split() 、join();

    三种 js 截取字符串的方法: substring() 方法: substr() 方法: slice() 方法: 1.:substring() 方法:string.substring(from, to ...

随机推荐

  1. 字符串全排列(permutation)

    Reference: http://www.cnblogs.com/sujz/archive/2011/06/16/2082831.html 问题:给定字符串S,生成该字符串的全排列. 方法1:依次从 ...

  2. 【BZOJ】1191: [HNOI2006]超级英雄Hero(二分图匹配)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1191 一眼题,笑嘻嘻地写了匈牙利,提交..WA了?不科学!!!!!数组小了??不思考了,改大提交,. ...

  3. JS中检测数据类型的四种方式及每个方式的优缺点

    //1.typeof 用来检测数据类型的运算符 //->typeof value //->返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number". ...

  4. elasticsearch2.2 集群搭建各种坑

        目前生产环境的es版本是1.0版本,需要升级到最新的2.2版本,于是在测试环境进行部署集群测试,在测试过程中遇到的坑相当多,下面详细介绍下.       1. 版本升级到2.2后,必须建一个单 ...

  5. cvSave in VS2010 or Linux

    cvSave这个函数是OpenCV中用来保存某个数据类型到文件中常用的函数,它原本共有五个参数,但是在VS2010中只需要填前两个,而在Linux必须填满五个,否则会出错,如下: // VS2010 ...

  6. IplImage 与 QImage 相互转换

    在使用Qt和OpenCV编程时,对于它们各自的图像类QImage和IplImage难以避免的需要互相之间的转换,下面我们就来看它们的相互转换. 1. QImage 转换为 IplImage IplIm ...

  7. Apache和mysql的安装设置

    Apache和mysql的安装较简单,主要是安装前请保证80端口未被占用 比如 iis 以前安装过的apache mysql 先停止运行phpmyadmin,主要是配置文件的问题,把phpMyAdmi ...

  8. [转]SEP 11.x 迁移

    Sepm 迁移/灾难恢复     条件:更换服务器主机/重装服务器系统,但保持主机ip地址不更改,主机名不更改.     备份步骤:     Login 服务器控制台,进入"管理员" ...

  9. HDU 1114 完全背包+判断能否装满

    题意 给出一个存钱罐里的钱币重量 给出可能的n种钱币重量以及价值 求存钱罐中钱币的最小价值 若不可能另有输出 在裸的完全背包上加了一点东西 即判断这个背包能否被装满 初始化 dp[0]=0 其余的都使 ...

  10. Yii源码阅读笔记(十六)

    Model类,集中整个应用的数据和业务逻辑—— /** * Generates a user friendly attribute label based on the give attribute ...