美文网首页
07-30(数组)

07-30(数组)

作者: 是小张啊啊 | 来源:发表于2018-07-31 09:47 被阅读84次

    创建数组(两种方式)

    1.使用Array构造函数 var arr = new Array();

    var arr = new Array(1);//表示该数组长度为1
    var arr = new Array('1');//表示该数组中有一个字符串元素1,且长度也为1
    var arr = new Array(1,2,3,4);//数组元素包括值1,2,3,4,长度为4
    var arr = new Array('red','green','yellow');//数组中有三个字符串类型的元素
    

    2.使用字面量方法,多个项由逗号隔开

    var arr = [];//空数组
    var arr = [1,2,3,4];
    var arr = [1,2,3,];//会创建一个元素为1,2,3或为1,2,3,undefined的数组(ie8及以下浏览器中)
    

    判断是否为数组(两种方式)

    1.使用instanceof,返回值为布尔类型

    var arr = new Array();
    console.log(arr instanceof Array);//true
    

    2.使用isArray()方法,返回值为布尔类型

    console.log(Array.isArray(arr));//true
    

    数组的方法

    一、所有对象都具有的转换方法(1.valueOf(),2.toString(),3.toLocaleString())

    console.log(arr.valueOf());//返回原数组对象
    console.log(typeof arr.toString());//返回由数组中的每个元素用逗号拼接成的字符串
    console.log(typeof arr.toLocaleString());//同样是返回字符串,与toString()不同的是,该数组中的每一项元素都要调用toLocaleString()方法
    

    二、栈方法(先进后出 4.pop() 5.push())

    var arr = [2,6,3,4,6];
    alert(arr.pop());// 删除数组最后一个元素,返回最后一个元素6
    alert(arr.push('c',2,3));//从数组末尾添加一个或多个元素,返回新数组数组的长度8
    

    三、 6.shift() 7.unshift())

    var arr = [2,6,3,4,6];
    alert(arr.shift());// 删除数组第一个元素,返回该元素2
    alert(arr.unshift('c',2,3));//从数组头部添加一个或多个元素,返回新数组的长度
    

    四、位置方法(8.indexOf() 9.lastIndexOf())
    当找不到时,返回-1
    接受一个参数时:
    indexOf(value);返回从索引位置0开始计数查找,返回value值第一次出现的索引位置

    var arr = new Array(50,20,20,1,2,3);
    var a = arr.indexOf(20);//1
    

    lastIndexOf(value);//返回从数组末尾开始计数查找,返回value值第一次出现的索引位置

    var arr = new Array(50,20,20,1,2,3);
    var a = arr.lastIndexOf(20);
    console.log(a);//2
    

    接受两个参数时:value代表要查找的数值,index代表要查找的起始位置(从哪开始查找)
    indexOf(value,index);

    var arr = new Array(50,20,20,1,2,3);
    var a = arr.indexOf(1,3);
    console.log(a);//3
    var arr = new Array(50,20,20,1,2,3);
    var a = arr.indexOf(1,4);
    console.log(a);//-1
    

    lastIndexOf(value,index)

    var arr = new Array(50,20,20,1,2,3);
    var a = arr.lastIndexOf(1,4);
    console.log(a);//3
    var arr = new Array(50,20,20,1,2,3);
    var a = arr.lastIndexOf(1,2);
    console.log(a);//-1
    

    五、重排序方法(10.reverse() 11.sort())
    reverse()反转数组项的顺序

    var arr = new Array('a','b','c');
    var a = arr.reverse();
    console.log(a);//返回新数组  ['c','b','a']
    var arr = new Array(1,2,3);
    var a = arr.reverse();
    console.log(a);//返回新数组  [3,2,1]
    

    sort()方法可以接收一个比较函数作为参数
    原理:对数组中的每一项调用toString()方法,转化成字符串,再进行大小比较,最终返回新的数组

    var arr = new Array('da','aba','c');
    console.log(arr.sort());//["aba", "c", "da"]
    var arr = new Array(1,2,3,12,35);
    console.log(arr.sort());// [1, 12, 2, 3, 35]
    

    利用sort()方法进行数值排序(通过自定义比较函数,并将该函数作为参数传给sort()方法即可)

    //从小到大排序
    var arr = new Array(1,2,3,12,35);
    function compare(value1,value2){
        if(value1<value2){
            return -1;
        }else if(value1 < value2){
            return 1;
        }else{
            return 0;
        }
    }
    //数值型可以采用如下方法
    /*
    function compare(value1,value2){
       return value1 - value2;
    }
    */
    console.log(arr.sort(compare));// [1, 2, 3, 12, 35]
    

    六、操作方法(12.join() 13.slice() 14.concat() 15.splice(index,num,item1,item2,item3...))
    join('-')只接收一个参数,即作为连接数组的分隔符,返回拼接好后的字符串

    var arr = new Array(1,2,3,12,35);
    console.log(arr.join('-'));//1-2-3-12-35
    console.log(typeof arr.join('-'));//string
    

    slice()接收一个或两个参数,如果不写参数,则返回空数组
    当接收一个参数时,返回从该索引位置开始到结束位置的所有数组项,不改变原数组

    var arr = new Array(1,2,3,12,35);
    console.log(arr.slice(3));//[12, 35]
    console.log(arr.length);//5
    

    当接收两个参数时,返回从index1开始到index2结束的所有数组项,不包括index2项

    var arr = new Array(1,2,3,12,35);
    console.log(arr.slice(2,4));//[3, 12]
    

    concat()
    可以传递一到多个数组,会将数组中的每一项都添加到原数组中,返回新的数组,原数组保持不变

    var arr = new Array(1,2,3,12,35);
    var a = ['a','b','c'];
    var b = [66,88,11];
    var c = arr.concat(a,b);
    console.log(c);//[1, 2, 3, 12, 35, "a", "b", "c", 66, 88, 11]
    console.log(arr);//[1, 2, 3, 12, 35]
    

    如果传递的不是数组,则同样被添加到原数组末尾,返回新的数组,原来数组保持不变

    var arr = new Array(1,2,3,12,35);
    console.log(arr.concat('a',1));//[1, 2, 3, 12, 35, "a", 1]
    

    如果不写参数,则返回原来的数组

    var arr = new Array(1,2,3,12,35);
    console.log(arr.concat());//[1,2,3,12,35]
    

    splice(index,num,item1.item2,item3)可以在数组的任意位置插入、删除、替换一个或多个元素,返回新的数组,原数组改变
    插入元素:(从索引位置为index之前,删除num=0个元素,插入item1,item2..个元素)

    var arr = new Array(1,2,3,12,35);
    arr.splice(1,0,'a','b');
    console.log(arr);//[1, "a", "b", 2, 3, 12, 35]
    

    删除元素:(从索引位置为index开始,包括等于索引index的元素,直接删除num个元素)

    var arr = new Array(1,2,3,12,35);
    arr.splice(1,2);
    console.log(arr);//[1, 12, 35]
    

    替换元素:(从索引位置为index开始,包括索引位置等于index的元素,删除num个元素,再插入对应的元素)

    var arr = new Array(1,2,3,12,35);
    arr.splice(1,2,'99','88','77');
    console.log(arr);//[1, "99", "88", "77", 12, 35]
    

    七、迭代方法(16.filter() 17.every() 18.some() 19.forEach() 20.map())
    数组调用这些方法,每个方法都接收两个参数:要在数组中的每一项运行的函数,和运行该函数的作用域对象
    传入每一项运行的函数都接收三个参数:数组中的每一项元素,该项在数组中的位置,数组对象本身
    filter()返回满足函数条件的新数组,原数组保持不变

    var arr = new Array(1,2,3,12,35);
    var a = arr.filter(function fn(item,index,array) {
        return (item>2);
    });
    console.log(a);//[3, 12, 35]
    console.log(arr);//[1, 2, 3, 12, 35]
    

    every()只有所有项全部满足函数条件,才会返回true,否则返回false,原数组不变

    var arr = new Array(1,2,3,12,35);
    var a = arr.every(function fn(item,index,array) {
        return (item>2);
    });
    console.log(a);//false
    console.log(arr);//[1, 2, 3, 12, 35]
    

    some()只要存在某一项满足函数条件,就会返回true,原数组不变

    var arr = new Array(1,2,3,12,35);
    var a = arr.some(function fn(item,index,array) {
        return (item>2);
    });
    console.log(a);//true
    console.log(arr);//[1, 2, 3, 12, 35]
    

    forEach()遍历数组中的每一项元素,对数组中的每一项执行传入的函数,没有返回值

    var arr = new Array(1,2,3,12,35);
    var a = arr.forEach(function fn(item,index,array) {
        //自定义执行某些操作
    });
    

    map() 返回新数组,该新数组中的每一项都是对应于原数组中的每一项,并且值为原数组中的每一项运行执行函数的返回结果,原数组不变

    var arr = new Array(1,2,3,12,35);
    var a = arr.map(function fn(item,index,array) {
        return (item*3);
    });
    console.log(a);// [3, 6, 9, 36, 105]
    console.log(arr);//[1, 2, 3, 12, 35]
    

    相关文章

      网友评论

          本文标题:07-30(数组)

          本文链接:https://www.haomeiwen.com/subject/corfvftx.html