zoukankan      html  css  js  c++  java
  • JS数组判断,方法

     

    怎么判断一个对象是不是数组?

     

    1. 首先可以用 ES5 提供的 isArray 方法进行判断(注意:Array.isArray是ES 5.1推出的,不支持IE6~8,所以在使用的时候也应注意兼容问题。 )
    2. 可以使用 instanceof Array 来判断,不过这种方式存在问题,比如当存在多个全局对象(如使用ifream),那么这个窗口的Array对象对另一个窗口使用 instanceof 就会判断失败
    3. 通过 toString 来进行判断
      function isArray(value){
      return Object.prototype.toString.call(value) === "[object Array]";
      }
       
     

    一、增

     

    1、push()

    可接收任意数量的参数,把它们逐个添加至数组末尾,并返回修改后数组的长度。例如:
    var arr = [];
    var len = arr.push(1);
    console.log(arr); // [1]
    console.log(len); // 1
    len = arr.push(2,3);
    console.log(arr); // [1,2,3]
    console.log(len); // 3

    2、unshift()

    该方法与push()类似,也可接收任意数量的参数,只不过是将参数逐个添加至数组前端而已,同样返回新数组长度。咱们接着上面的例子:
    var len = arr.unshift(0);
    console.log(arr); // [0, 1, 2, 3]
    console.log(len); // 4
    len = arr.unshift(-2,-1);
    console.log(arr); // [-2, -1, 0, 1, 2, 3]
    console.log(len); // 6

    3、concat()

    该方法与push()方法有点类似,同样是将元素添加至数组末尾,只不过这个数组已经不是原来的那个数组了,而是其副本,所以concat()操作数组后会返回一个新的数组。具体用法如下:
    ① 不传参数,返回当前数组副本
    ② 传递一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中
    ③ 传递非数组参数,这些参数就会被直接添加到结果数组的末尾
    继续接着上面的栗子:
    var arr1 = arr.concat(4,[5,6]);
    console.log(arr); // [-2, -1, 0, 1, 2, 3]
    console.log(arr1); // [-2, -1, 0, 1, 2, 3, 4, 5, 6]
    例子中一目了然,原数组保持不变,新数组后面添加了4、5、6三个元素。

    4、splice()

    前面的三个方法都具有很大局限性,因为不是添加到数组前就是数组后,而splice()就不一样了,它非常灵活和强大。灵活是因为它可以添加元素到数组的任意位置,强大是因为它除了可以添加元素之外还具有删除和替换元素的功能(这个后面会陆续讲到)。
    splice()可以向数组指定位置添加任意数量的元素,需要传入至少3个参数:起始位置、0(要删除的元素个数)和要添加的元素。
    依然接着上面的例子继续:
    arr.splice(3,0,0.2,0.4,0.6,0.8);
    console.log(arr); // [-2, -1, 0, 0.2, 0.4, 0.6, 0.8, 1, 2, 3]
    可以看出,splice()与push()和unshift()一样是直接在原数组上修改的
     

    二、删

    1、pop()

    与push()方法配合使用可以构成后进先出的栈,该方法可从数组末尾删除最后一项并返回该项。
    接着上例:
    var item = arr.pop();
    console.log(item); // 3
    console.log(arr); // [-2, -1, 0, 0.2, 0.4, 0.6, 0.8, 1, 2]

    2、shift()

    与push()方法配合使用可以构成先进先出的队列,该方法可删除数组第一项并返回该项。
    继续接着上例:
    var item = arr.shift();
    console.log(item); // -2
    console.log(arr); // [-1, 0, 0.2, 0.4, 0.6, 0.8, 1, 2]

    3、slice()

    该方法同concat()一样是返回一个新数组,不会影响原数组,只不过slice()是用来裁剪数组的,返回裁剪下来的数组,具体用法如下:
    slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。
    咱们还是继续接着上面例子吧~~
    var arr2 = arr.slice(2,6);
    console.log(arr); // [-1, 0, 0.2, 0.4, 0.6, 0.8, 1, 2]
    console.log(arr2); // [0.2, 0.4, 0.6, 0.8]

    4、splice()

    好,继续讲这个“万能”的方法。
    上面讲到,该方法在添加数组元素的时候需要传入3个以上参数,而其中第2个参数就是用于指定要删除元素的个数的,那时我们传的是数字0。那么,如果单单只需删除元素,我们就只需给splice()传入两个参数,第1个参数用于指定要删除的第一项的位置,第2个参数用于指定要删除元素的个数。
    继续上例~~
    arr.splice(2,4);
    console.log(arr); // [-1, 0, 1, 2]
    从索引项为2的位置开始删除4个元素,所以结果为 [-1, 0, 1, 2]。
     

    三、改

    这个其实最灵活的方式就是直接使用splice()这个强大的方法了,其实通过以上对该方法的了解,我们大致就能知道使用该方法修改数组元素的基本原理。
    原理很简单,就是向指定位置插入任意数量的元素,且同时删除任意数量的元素
    依然继续上例~~
    arr.splice(2,1,0.5,1,1.5);
    console.log(arr); // [-1, 0, 0.5, 1, 1.5, 2]

    四、查

    indexOf()和lastIndexOf()

    这两个方法都接收两个参数要查找的项和(可选的)表示查找起点位置的索引。其中,indexOf()从数组的开头(位置0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。
    例如:
    var index = arr.indexOf(0);
    console.log(index); // 1
    index = arr.indexOf(3,0);
    console.log(index); // -1
    当找不到该元素时,返回 -1 ,lastIndexOf()方法同理。
                 
     
     
     
    在看
     
  • 相关阅读:
    Mysql常用命令行大全(转)
    python 列表返回重复数据的下标
    啊哈算法, 水管工游戏
    python 实现结构体
    最长子回文字符串(Manacher’s Algorithm)
    一张图说明容器和镜像和仓库的关系
    nginx命令大全
    Django(request和response)
    python django + js 使用ajax进行文件上传并获取上传进度案例
    详解django三种文件下载方式
  • 原文地址:https://www.cnblogs.com/monica4/p/11359079.html
Copyright © 2011-2022 走看看