JavaScript之 数组的方法

1、contcat

作用:concat() 连接两个或更多的数组,并返回结果。

主要作用有三个:

(1)连接两个或者多个数组

var arr1=[1,2,3,4,5];
    var arr2=[6,7,8,9,0];
    var arr=arr1.concat(arr2);
    console.log(arr);
打印结果:


(2)用来复制数组,产生一个新的数组,且两个数组之间没有引用关系

//直接将arr1赋给arr3,当arr3的值改变时,arr1也改变
    var arr3=arr1;
    arr3[0]=10;
    console.log(arr3,arr1);
   //用concat()产生的arr4的值改变,arr1不变
    var arr4=arr1.concat();
    arr4[0]=10;
    console.log(arr4,arr1);

(3)contcat可以在数组的尾部添加新元素

var arr1=[1,2,3,4,5];
    var arr1=arr1.concat(6,7);
    console.log(arr1);
返回结果为 [1, 2, 3, 4, 5, 6, 7]

2、join:

作用:join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。原数组不发生改变。

    var arr1=[1,2,3,4,5];
//    如果括号中的值为空,默认用“,”连接,返回值为字符串
    var str=arr1.join();
//    如果括号中的值为指定字符串,返回值以指定字符串连接,形成新的字符串
    var str0=arr1.join("%");
    console.log(str,str0);
打印显示:1,2,3,4,5                 1%2%3%4%5

3、push:

作用:push() 向数组的末尾添加一个或更多元素,并返回新的长度。不会产生新数组,原数组改变

 var arr1=[1,2,3,4,5];
//      添加元素,返回值为长度
      var len=arr1.push(1,2,3,4);
//      添加数组,数组算作一个长度
      arr1.push([1,2,3,4]);
      console.log(arr1,len);
返回值:(10) [1, 2, 3, 4, 5, 1, 2, 3, 4, Array(4)] 9

三个案例:

//      给数组之间添加0-100的偶数
       var arr1=[];
       for(i=0;i<100;i+=2){
           arr1.push(i);
       }
       console.log(arr1);
//将arr1中的数保留只能被3整除的数,添加到新的数组中
       var arr2=[];
       for (j=0;j<arr1.length;j++){
               if(arr1[j]%3===0){
               arr2.push(arr1[j]);
               }
       }
       console.log(arr2);
//将arr2中的数保留只能被5整除的数,不产生新的数组
       var arr3=[];
       for(k=0;k<arr2.length;k++){
           if(arr2[k]%5===0){
               arr3.push(arr2[k]);
           }
       }
       arr2=arr3.concat();
       arr3.length=0;
       console.log(arr2);

4、pop:

作用:pop() 删除并返回数组的最后一个元素,不会产生新数组,原来的数组会改变。原数组的长度也会变小。

注意:一般应用的案例,为最后一名删掉。

    var arr=[1,2,3];
//    arr0为其返回值,
    var arr0=arr.pop();
//    返回结果为(2) [1, 2] 3
    console.log(arr,arr0);

典型案例:

//    pop应用中,清空数组的错误做法
//分析:由于pop应用时,length不断改变,所以不会被删除干净
    for(var i=0;i<arr.length;i++){
        arr.pop();
    }
//    返回的结果为var arr=[1,2,3];
    console.log(arr);
//解决1:从后往前删
    for(i=arr.length-1;i>-1;i--){
        arr.pop();
    }
    console.log(arr);
//    解决2:
    var len=arr.length;
    for(var i=0;i<len;i++){
        arr.pop();
    }
    console.log(arr);

以上案例或者,直接

arr.length=0;//清空数组,最简单的做法!!!

5、unshift和shift

作用:unshift() 向数组的开头添加一个或更多元素,并返回新的长度。

shift() 删除并返回数组的第一个元素

注意:两者不推荐使用,机制如下:


6、splice:

作用:splice() 删除元素,并向数组添加新元素。

   var arr=[1,2,3,4,5,6,7,8,9,10];
//    添加元素:splice(开始位置,0,添加内容),从开始位置插入添加新的数据
      arr.splice(2,0,8);
      console.log(arr);
//      删除元素:splice(开始位置,要删除的数量),从开始位置删除需要删除的数量数据
       arr.splice(2,2);
       console.log(arr);
//      替换元素:splice(开始位置,要删除的数量,添加的内容),
//       从开始位置删除需要删除的数量内容,并在这个位置再添加新的内容,称为替换
       arr.splice(2,2,10,20);
       console.log(arr);

返回结果:

 (11) [1, 2, 8, 3, 4, 5, 6, 7, 8, 9, 10]0: 11: 22: 103: 204: 65: 76: 87: 98: 10length: 9__proto__: Array(0)
 (9) [1, 2, 4, 5, 6, 7, 8, 9, 10]

(9) [1, 2, 10, 20, 6, 7, 8, 9, 10]

7、indexOf:主要作用是去重

var arr=[1,2,3,4,3,5,6,7,8,9,10];
//查找3这个值,返回的是它的索引位置
var index0=arr.indexOf(3);
console.log(index0);
var arr=[1,2,3,4,3,5,6,7,8,9,10];
//从第三位开始查找3这个值,返回的是它的索引位置
//注意:只能查找重复的元素,不重复的不能从第几个开始查找,否则返回值为-1
var index=arr.indexOf(3,3);
console.log(index);
注意:lastindexOf(3)为从后往前查找
重点:去重
var arr=[1,2,3,3,4,3,6,5,6,7,8,0,9,1,10];
var arr1=[];
for(var i=0;i<arr.length;i++){
    if(arr1.indexOf(arr[i])===-1){
        arr1.push(arr[i]);
    }
}

案例:

//需求:将两个数组中不重复的值取出,不产生新的数组
var arr3=[1,2,3,4,5,6,7,8,9,11,12,15,11];
var arr4=[1,3,5,7,9,12,15,20,16,3];
var arr5=[];
for(var i=0;i<arr3.length;i++){
    if(arr4.indexOf(arr3[i])===-1){
        arr5.push(arr3[i]);
    }
}
arr3=arr5.concat();
arr5.length=0;
console.log(arr3);

8、reverse:

作用:reverse() 颠倒数组中元素的顺序,倒序不排序,只是首尾颠倒,原数组改变,不产生新数组。

9、sort:

作用:sort() 对数组的元素进行排序,没有产生新数组,原数组改变,默认从小到大排序。如果是非数值按照第一位的Ascii码排序。数值也会按照第一位的Ascii码排序。

  var arr=[1,2,3];
    arr.sort(function (a,b) {
//        b-a从小到大,a-b从小到大
        return b-a;
    })
    console.log(arr);
注意:sort(function(a,b){
        *       return a-b  从小到大
        *       return b-a 从大到小
        *       如果a和b是对象,比较对象某个属性大小时,

        *       return a.属性-b.属性

案例:

//    随机抽取0-10之间三个值不重复
    var arr=[];
    for(i=0;i<11;i++) {
        arr.push(i);
    }
        arr.sort(function () {
            return Math.random()-0.5;
        });
    arr.length=3;
    console.log(arr);

10.slice

作用:slice() 从某个已有的数组返回选定的元素,截取。不改变原数组,生成新数组。

    var arr=[1,2,3,4,5,6,7,8,9,0];
//    截取arr.slice(开始下标,结束下标)
    var arr1=arr.slice(2,3);
    console.log(arr1);
//    复制一个新数组,与原数组无引用关系
     var arr2=arr.slice();

注:开始下标和结束下标都可以为负值,开始值必须小于结束值。为负值从后往前。

如果只有开始下标没有结束下标,则从开始到结束。

//forEach用法
var arr=[1,2,3,4,5,6,7,8,9,0];
var arr1=[];
arr.forEach(function(item,index,array) {
    array[index]++;
});
console.log(arr);
案例:
//arr1中所有能被2整除的数全部加1
var arr1=[1,2,3,4,5,6,7,8,9,0];
var arr=[];
    arr1.forEach(function(item,index,array) {
        if(item%2===0){
            array[index]++;
        }
    });

console.log(arr1);

11、二维数组

//    定义一个二维数组
    var arr=[];
    for(var i=0;i<10;i++){
        arr[i]=[];
        for (var j=0;j<10;j++){
            arr[i][j]=i*10+j;
        }
    }
    console.log(arr);

猜你喜欢

转载自blog.csdn.net/xzz2222/article/details/79629636