• 【JS】引用类型之Array


    Array类型                                                                                                                                 

    声明方式:

    //在使用new Array声明数组时可以省略new关键字
    
    //方法1:
    var colors = new Array();
    colors.push("red");
    
    //方法2:
    var colors = new Array(1);
    colors.push("red");
    
    //方法3:
    var colors = ["red"];
    
    //方法4:
    var colors = new Array("red");

    常用的方法:

     1、检测对象是否是数组

    //方法1:
    //如果网页包含多个框架,那实际存在多个全局的执行环境(Array是window对象的一个属性),如果跨执行环境调用检测将返回false
    if(xx instanceof Array);
    
    //方法2:
    //此方法只在IE9+、FF4+、Safari5+、Opera10.5+、和Chrome中有效
    if(Array.isArray(xx));
    
    //方法3:
    //最安全的方法
    function isArray(value){
        return Object.prototype.toString.call(value)=="[object Array]";  
    }

    2、将数组对象转换成String

    var colors = ["red","blue"];
    alert(colors .toString());//red,blue
    alert(colors.toLocaleString());//red,blue
    alert(colors.valueOf());//red,blue
    alert(colors);//red,blue
    
    //toString()和toLocaleString()一般情况是返回相同的值,但当数组里的项自定义了toLocaleString时就会调用自定义的方法。
    
    
    //join方法
    //修改toString时的默认拼接字符(,号)
    var colors = ["red","blue"];
    alert(colors.join("|"));//red|blue
    alert(colors.join("&"));//red&blue

     3、栈方法

    也就是后进先出

    var colors = new Array();
    colors.push("red");//推入1项
    colors.push("blue","yellow");//推入2项,方法可以接收N个参数
    
    alert(colors.pop());//yellow  获取弹出的值 
    
    alert(colors.toString());//red,blue

    4、队列方法

    也及是先进先出

    方法1:正向(后面添加、前面弹出)

    var colors = new Array();
    colors.push("red");//推入1项
    colors.push("blue","yellow");//推入2项,方法可以接收N个参数
    
    alert(colors.shift());//red 获取第一个值
    
    alert(colors.toString());//blue,yellow

    方法2:反向(前面添加、后面弹出)

    var colors = new Array();
    colors.unshift("red");//在数组最前面推入1项
    colors.unshift("blue","yellow");//在数组最前面推入2项,方法可以接收N个参数
    
    alert(colors.pop());//red 获取最先压入的值
    
    alert(colors.toString());//blue,yellow

     5、排序

    sort()默认根据数组元素的string形式进行升序,可以传入比较函数修改默认行为。

    reverse()将数组里的元素颠倒

    默认排序:

    var arr = [0,1,10,5,15];
    arr.sort();
    alert(arr); //0,1,10,15,5
    
    var arr2 = [0,1,10,5,15];
    arr2.reverse();//15,5,10,1,0
    alert(arr2);

    通过比较函数进行排序:

    function compare(value1,value2){
        if(value1 < value2){
            return -1; //负数表示第一个数应该在第二个数之前
        }else if(value1 > value2){
            return 1;//正数表示第一个参数应该在第二个数之后
        }else{
            return 0; //相等,不需要调换位置
        }
    }
    var arr = [0,1,10,5,15];
    arr.sort(compare);
    alert(arr); //0,1,5,10,15
    
    //对于数字类型的排序的比较函数可以简写成下面这写法
    function compare(value1,value2){
        return value1 - value2
    }

     6、操作方法

    复制、拼接数组的concat方法

    //concat方法
    var colors = ["red","blue","yellow"];
    var colors2 = colors.concat();//["red","blue","yellow"]
    var colors3 = colors.concat("black");//["red","blue","yellow","black"]
    var colors4 = colors.concat("black","brown");//["red","blue","yellow","black","brown"]
    var colors4 = colors.concat("black",["purple","green"]);//["red","blue","yellow","black","purple","green"]
    
    alert(colors);//["red","blue","yellow"];

    截取数组的slice方法

    //slice方法
    //当slice有2个参数时,第二个参数表示结束的索引,但不包括该值
    var colors = ["red","blue","yellow","black"];
    var colors2 = colors.slice(); //"red","blue","yellow","black"
    var colors3 = colors.slice(1); //"blue","yellow","black"
    var colors4 = colors.slice(1,3);//"blue","yellow" 
    
    alert(colors);//red,blue,yellow,black

    删除、插入、替换与一身的splice方法

    不同操作的方法参数说明:

    删除:指定2个参数:要删除的第一项的索引和要删除的项数,例如:splice(0,2)表示删除数组的前2项。

    插入:指定3个参数:起始位置坐标,num(要删除的项数),要插入的项(这个参数可以有很多个),例如:splice(2,0,"red","yellow")表示在当前索引为2的项前面插入red和yellow。

    替换:指定3个参数:起始位置坐标,num(要删除的项数),要插入的项(这个参数可以有很多个),例如:splice(2,1,"red")表示从包括索引为2的项开始删除1项,然后插入red。

    var colors = ["red", "green", "blue"];
    var removed = colors.splice(0,1);              //remove the first item
    alert(colors);     //green,blue
    alert(removed);    //red - one item array
            
    removed = colors.splice(1, 0, "yellow", "orange");  //insert two items at position 1
    alert(colors);     //green,yellow,orange,blue
    alert(removed);    //empty array
    
    removed = colors.splice(1, 1, "red", "purple");    //insert two values, remove one
    alert(colors);     //green,red,purple,orange,blue
    alert(removed);    //yellow - one item array

     7、位置方法

    //indexOf和lastIndexOf的第二个参数表示查找的起点索引
    var numbers = [1,2,3,4,5,4,3,2,1];
            
    alert(numbers.indexOf(4));        //3
    alert(numbers.lastIndexOf(4));    //5
            
    alert(numbers.indexOf(4, 4));     //5
    alert(numbers.lastIndexOf(4, 4)); //3       
    
    var person = { name: "Nicholas" };
    var people = [{ name: "Nicholas" }];
    var morePeople = [person];
            
    alert(people.indexOf(person));     //-1
    alert(morePeople.indexOf(person)); //0

     8、内部迭代方法

    支持的浏览器版本:IE9+、FF2+、Safari3+、Opera9.5+和Chrome

    //every方法的函数迭代每一项都为true,结果才为true
    var numbers = [1,2,3,4,5,4,3,2,1];
    var everyResult = numbers.every(function(item, index, array){
            return (item > 2);
    });
    alert(everyResult);       //false
    
    //some方法的函数迭代到某一项为true,结果就为true
    var someResult = numbers.some(function(item, index, array){
           return (item > 2);
    });
    alert(someResult);       //true
    
    //filter方法返回满足参数方法里条件的所有的项的数组对象
    var numbers = [1,2,3,4,5,4,3,2,1];
    var filterResult = numbers.filter(function(item, index, array){
          return (item > 2);
    });
    alert(filterResult);   //[3,4,5,4,3]
    
    //map方法是用函数参数里的返回结果替换原来的项,原来的数组是只读的
    var numbers = [1,2,3,4,5,4,3,2,1];
    var mapResult = numbers.map(function(item, index, array){
          return item*2;
    });
    alert(mapResult);   //[2,4,6,8,10,8,6,4,2]
    
    //forEach方法就是我们常用的循环的一个定义方法,可以在参数函数里执行我们自己的操作而不需要返回任何值
    var numbers = [1,2,3,4,5,4,3,2,1];
    numbers.forEach(function(item,index,array){
          //do you want do
    });

    9、缩小方法

    也就是每次获得2项,每次循环得到2个项,并且将返回的结果值累计(+、-、*、/等)

    支持的浏览器版本:IE9+、FF2+、Safari3+、Opera9.5+和Chrome

    //reduce方法是每次循环得到2个项,并且将返回的结果值累计(+、-、*、/等)
    var values = [1,2,3,4,5];
    var sum = values.reduce(function(prev, cur, index, array){
        return prev * cur;//这里可以改变操作符
    });
    alert(sum);//120
    
    var sum2 = values.reduce(function(prev, cur, index, array){
        return prev + cur;//这里可以改变操作符
    });
    alert(sum2);//15
            
    //reduceRight方法是reduce的反方向循环操作
    var sum2 = values.reduceRight(function(prev, cur, index, array){
        return prev + cur;//这里可以改变操作符
    });
    alert(sum2);//15
  • 相关阅读:
    mysql 练习题
    mysql 语法
    mysql数据库简单练习(创建表格,增删改查数据)
    dom对象基础
    JS定时器
    JS小测验
    JS事件练习题
    JS事件
    dom对象
    tiles介绍
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/3012446.html
Copyright © 2020-2023  润新知