• JavaScript中Array类型的检测和方法


      instanceof 操作符可以检测对象的具体类型,如下:

    if (value instanceof Array){
    //对数组执行某些操作
    }

      但问题是 instanceof 判断的依据是基于原型链去查找Array()构造函数。若只有一个全局执行环境,instanceof 确实可以判断。若网页包含多个框架,实际上存在多个全局执行环境,不同框架之间传入数组,判断的结果是不准确的。

      Array.isArray()方法是最终确定某个值到底是不是数组,而不管它是在哪个全局执行环境中创建的,用法如下:

    if (Array.isArray(value)){
    //对数组执行某些操作
    }

      

      Array() 的转换方法:toLocaleString()、 toString()、join()、valueOf()方法。前两个返回的是以逗号隔开的字符串,join()只接受一个参数作为分隔符并返回字符串,最后一个返回的是数组。前两个的区别如下:

    var person1 = {
        toLocaleString : function () {
            return "Nikolaos";
        },
        toString : function() {
            return "Nicholas";
        }
    };
    
    var person2 = {
        toLocaleString : function () {
            return "Grigorios";
        },
        toString : function() {
            return "Greg";
        }
    };
    
    var people = [person1, person2];
    alert(people); //Nicholas,Greg
    alert(people.toString()); //Nicholas,Greg
    alert(people.toLocaleString()); //Nikolaos,Grigorios                

      栈方法:push()和 pop(),其功能是在数组尾部添加任意的项和去除最后一项。

      队列方法:unshift()和shift(),其功能是在数组头部添加任意的项和去除第一项。

      重排序方法:reverse()和sort()。reverse()方法是反转数组顺序。默认下,sort()方法按升序排列数组项——即最小的值位于最前面,最大的值排在最后面。sort()接受一个比较函数,以便确定怎么排序。如下:

    function compare(value1, value2) {
        if (value1 < value2) {
            return 1;
        } else if (value1 > value2) {
            return -1;
        } else {
            return 0;
        }
    }
    
    var values = [0, 5, 1, 10, 15];
    values.sort(compare);
    alert(values); // 15,10,5,1,0

      操作方法:concat()方法可以基于当前数组中的所有项及传入的参数创建一个新数组。

    slice()方法能够基于当前数组中的一或多个项创建一个新数组。 slice()方法可以接受一或两个参数,即要返回项的起始和结束位置,若只有一个参数,返回从该参数指定位置开始到当前数组末尾的所有项。

    splice()方法主要用途是向数组的中部插入项。第一个参数是指定数组位置,第二个是从指定位置向后 n(传入值)项,第三个至第n项参数是从指定位置插入.

    var colors = ["red", "green", "blue"];
    var removed = colors.splice(0,1); // 删除第一项
    alert(colors); // green,blue
    alert(removed); // red,返回的数组中只包含一项

    removed = colors.splice(1, 0, "yellow", "orange"); // 从位置 1 开始插入两项 alert(colors); // green,yellow,orange,blue alert(removed); // 返回的是一个空数组

    removed = colors.splice(1, 1, "red", "purple"); // 插入两项,删除一项 alert(colors); // green,red,purple,orange,blue alert(removed); // yellow,返回的数组中只包含一项

      位置方法:indexOf()和 lastIndexOf()。这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, indexOf()方法从数组的开头(位置 0)开始向后查找, lastIndexOf()方法则从数组的末尾开始向前查找。

      迭代方法:every()、filter()、foreach()、map()和some()。每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响 this 的值。

      every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。
      filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
      forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
      map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
      some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。

      归并方法:reduce()和 reduceRight()。reduce()方法从数组的第一项开始,逐个遍历到最后。而 reduceRight()则从数组的最后一项开始,向前遍历到第一项。这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。调用的函数接收4个参数:前一个值、当前值、项的索引和数组对象。

  • 相关阅读:
    css,dispaly与visibility
    关于easyui使用的一些错误
    如何修改 node_modules 里的文件
    vue中执行异步函数async和await的用法
    JavaScript中的变量提升本质
    JS 会有变量提升和函数提升
    Weakmap详解
    js中“??“和“?.“怎么用?
    selenium去除特征 undetected_chromedriver
    js 对象嵌套 hook
  • 原文地址:https://www.cnblogs.com/zjp-zxy/p/9565036.html
Copyright © 2020-2023  润新知