Array

作者: 随风飞2019 | 来源:发表于2019-09-29 07:10 被阅读0次

    数组的创建,最简单的字面量方式

    var arr = [ 1,2,77,8,4,5 ];
    

    添加、删除

    arr.length = 0; //清空数组的方法,让length等于0;
    arr = []; //从新赋值一个空数组,清空
    arr.unshift( 0 ); //向数组的第一位添加内容
    arr.push( 99 ); //向数组最后一位添加内容
    arr.shift();// 删除数组的第一位,返回被删除值
    arr.pop(); //删除数组的最后一位,返回被删除值
    arr.splice( start1 , end3 );// 删除类 ,从开始第1个起删除到结束第3个
    不包括第三个,返回删除的组成的新数组,不影响原数组。
    arr.splice( 0 , 0 , ‘xuanmo’ );//添加,从第0个开始添加
    arr.splice( 1 , 1 , ‘xuanmo’ ); //替换,替换掉第一个
    
    

    排序

    arr.sort();//数组排序,默认以字符串大小编码排序
    arr.sort(function( a , b ){ return a – b });//标准排序传入比较函数,
    alert( str.split('').join('-') );//字符串拆分成数组,并未没一个字符后添加一个‘-’
    arr.concat( arr1 );//拼接数组,把两个或者多个数组拼接在一起
    arr.reverse();//数组前后调换位置
    console.log( str.split('').reverse().join('') );//利用reverse()方法将字符串换位置
    

    数组转换成字符串

    arr.join(''); //把数组变成字符串
    

    随机排序

    var arr = [0, 1, 2, 3, 4];
    arr.sort( randomSort );
    function randomSort(){
      return Math.random() > 0.5 ? -1 : 1;
    }
    

    数组去重

    // ES5方法
    function deleteArray( arr ){
      for( var i = 0; i < arr.length; i++ ){
        for( var j = i+1; j < arr.length; j++ ){
          if( arr[i] == arr[j] ){
            arr.splice(j, 1);
            j--;
          }
        }
      }
      return arr;
    }
    
    // 利用indexOf方法
    function removeArrayRepeat (arr) {
      var newArr = [];
      for(var i = 0, len = arr.length; i < len; i++){
        if(newArr.indexOf(arr[i]) === -1) newArr.push(arr[i]);
      }
      return newArr;
    }
    
    // ES6方法
    Array.from(new Set([1, 2, 3, 2, 5, 8, 1]))  // [1, 2, 3, 5, 8]
    
    // 利用扩展运算符方法
    [...new Set([1, 2, 3, 2, 5, 8, 1])]  // [1, 2, 3, 5, 8]
    

    数组就是一组数据的集合,JavaScript中,数组里面的数据可以是不同类型

    /*通过类实例化来创建数组*/
    var aList01 = new Array(1,3,5,7);
    
    /*通过字面量的方式*/
    var aList02 = [1,2,3];
    
    /*获取组的类成员个数*/
    alert(aList02.length);
    
    /*通过下标操作数*/
    alert(aList01[2]);
    
    /*通过push在数组后面添加成员*/
    aList01.push('m');
    alert(aList01);
    
    /*从后面删除成员*/
    aList01.pop();
    alert(aList01);
    
    /*从前面添加成员*/
    aList01.unshift(1);
    alert(aList01);
    
    /*从前面删除成员*/
    aList01.shift();
    alert(aList01);
    
    /*反转排序*/
    aList01.reverse();
    alert(aList01);
    
    /*指出元素在组的位置*/
    var aList03 = ['a','b','c','d'];
    alert(aList03.indexOf('c'));
    
    /*splice(起始位,删除个数,添加元素)*/
    aList03.splice(1,2,'e','f');
    alert(aList03);
    
    /*join把元素连接,要用变量来接收字符串*/
    var sTr = aList03.join('-');
    alert(sTr);
    

    数组遍历

    1.使用for循环来遍历一个数组
    let arr=[2,4,6,10];
    for(let i=0;i<arr.length;i++){
    console.log(arr[i]);
    }
    2.for-in
    let arr=[2,4,6,10];
    for (var index in arr){
    console.log(arr[index]);
    }
    还可以遍历对象,得到键值对中的键
    let per={
    name:"zhang San",
    sex:'male',
    age:18
    };
    for(let key in per){
    console.log(key);//name,sex,age
    }

    3.forEach
    arr.forEach((item,i)=>{
    console.log(item,i)
    });

    4.for-of(ES6中新增),效率最高,没有返回值,但可以对每一项进行处理
    let arr=[3,7,9];
    for (let key of arr){
    console.log(key);
    }

    1. map有返回值,可以对每项进行处理后,生成一个新的数组
      let res = arr.map((item,i)=>{
      return 这是第${i}个元素:${item}
      })
      let arr = temp.map(item=>{
      return parseInt(item) //把每一项转换成数字,把09变成9
      })
      基于旧的数组,生成新的数组,这是forEach做不到的

    数组过滤

    1.filter过滤
    let arr=[1,2,3,4,5,6];
    let newArr=arr.filter(o=>o%2==0);
    console.log(newArr);//2 4 6
    2.every和some方法,返回一个真假布尔值
    every判断是不是每一个都符合条件
    some判断是不是有符合条件的
    let arr=[1,2,3,4,5,6];
    console.log(arr.some(o=>o%3==0));//true

    是否改变原数组

    • concat()
      连接两个或多个数组
      不改变原数组
      返回被连接数组的一个副本
    • join()
      把数组中所有元素放入一个字符串
      不改变原数组
      返回字符串
    • slice()
      从已有的数组中返回选定的元素
      不改变原数组
      返回一个新数组
    • toString()
      把数组转为字符串
      不改变原数组
      返回数组的字符串形式
    • pop()
      删除数组最后一个元素,如果数组为空,则不改变数组,返回undefined
      改变原数组
      返回被删除的元素
    • push()
      向数组末尾添加一个或多个元素
      改变原数组
      返回新数组的长度
    • reverse()
      颠倒数组中元素的顺序
      改变原数组
      返回该数组
    • shift()
      把数组的第一个元素删除,若空数组,不进行任何操作,返回undefined
      改变原数组
      返回第一个元素的值
    • sort()
      对数组元素进行排序(ascii)
      改变原数组
      返回该数组
    • splice()
      从数组中添加/删除项目
      改变原数组
      返回被删除的元素
    • unshift()
      向数组的开头添加一个或多个元素
      改变原数组
      返回新数组的长度
    join(separator)
    将数组的元素组起一个字符串,以separator为分隔符,
    省略的话则用默认用逗号为分隔符,该方法只接收一个参数:即分隔符。
    
    push()和pop()
    push()  接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度; 
    pop()   数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。
    
    shift() 和 unshift()
    shift()  删除原数组第一项,并返回删除元素的值,  如果数组为空则返回undefined; 
    unshift  将参数添加到原数组开头,并返回数组的长度 。
    
    reverse()
    //反转数组项的顺序
    var arr = [1, 3, 5, 7];
    console.log(arr.reverse()); //[7, 5, 3, 1]
    console.log(arr); //[7, 5, 3, 1](原数组改变).
    
    concat()
    将参数添加到原数组中。这个方法会先copy一个当前数组,
    然后将接收到的参数添加到这个copy数组的末尾,
    最后返回新构建的数组。
    在没有给 concat()方法传递参数的情况下,它只是复制当前数组并返回。
    
    indexOf()和 lastIndexOf()
    indexOf()  接收两个参数:
    要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的开头(位置 0)开始向后查找。 
    
    lastIndexOf接收两个参数:
    要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的末尾开始向前查找。
    
    这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回-1。
    
    在比较第一个参数与数组中的每一项时,会使用全等操作符。
    
    forEach()
    这个方法只支持IE8以上的浏览器, 所以如果需要兼容IE8,
    则不要使用forEach,  还是使用for循环来遍历
    
    使用:
    forEach()方法需要一个函数作为参数
    该函数,由我们创建但是不由我们调用的,称为回调函数
    数组中有几个元素, 函数就会执行几次,每次执行时,
    浏览器会将遍历到的元素以实参的形式传递进来,我们可以来定义形参,来读取这些内容
    
    浏览器会在回调函数中传递三个参数
    第一个参数,就是当前正在遍历的元素
    第二个参数,就是当前正在遍历的元素的索引
    第三个参数,就是正在遍历的数组
    
    格式
    arr.forEach(function(value , index , obj){
      console.log(value);
    });
    

    Array.from(obj)可以把obj转换成数组来操作

    相关文章

      网友评论

          本文标题:Array

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