js数组对象的属性和方法,以及数组的遍历,去重

内建对象;
由es标准定义的对象
    数组Array:和普通对象类似,数组是使用数字作为索引操作元素。
        索引:index。从零开始 的整数;
        数组的存储性能比普通对象好,
    创建数组对象
      var arr=new Array();

        //添加元素  数组[0]=10
        arr[0]=10;
        arr[1]=89;
        // console.log(arr);
    //    读取不存在的索引,返回undefined
        console.log(arr[2]);
    /*
    * 获取数组的长度
    * 可以使用length属性来获取数组的长度
    * */

        //修改length
        arr.length=10;
        console.log(arr);
    
    使用字面量创建数组,创建时就指定数组中元素;
     var arr=[10,8,3,4,3,4,2];
          console.log(arr.[0]);

    使用构造函数也可以创建数组。
    var arr2=new Array(10,2,3,4)
      arr2=new Array(10)//表示数组长度为10 
    
        数组中的元素可以是任意 的数据类型,也可以是对象,也可以是函数

数组的方法:
push 向数组末尾添加一个或多个元素,返回数组新的长度。会改变数组自身。
 var arr=['hello','nihao ',23,null,undefined];
 var result=arr.push("zhuzhujing","白骨精");
    console.log(result);//7

pop删除最后一个元素并返回数组中最后一个元素,会改变数组自身。
var result1=arr.pop();
    console.log(result1);//"白骨精”

unshift向数组中开头添加一个或多个元素,返回数组新的长度,会改变数组自身

shift 可以删除数组的第一个元素,并将删除的元素作为返回值。会改变数组自身。

数组的遍历:
  for (var i=0;i<arr.length;i++){
        console.log(arr[i]);
    }

forEach方法:
遍历数组,只支持IE8以上的浏览器
将函数作为参数
由我们创建但是不由我们调用,称为回调函数。
数组中有几个元素调用几次,浏览器会将遍历到的元素以实参的形式传递进来,可以定义形参来读取这些内容
浏览器会在回调函数中传递3个参数
1:当前正在遍历的数组元素  2:索引   3:正在遍历的数组对象。

var arr=[1,"白骨精",3,4,5];
arr.forEach(function (a,b,c) {
    console.log(a);
    console.log(b);
    console.log(c);
});

slice方法:在数组中提取指定元素,不会改变原数组。
会将截取到的数组封装到一个新数组并返回。
参数:开始索引,结束索引 (不包含结束索引)添加的元素
第二个可以省略,会截取开始索引往后的所有元素
索引可以传递一个负值。从后往前计算
 var arr=[1,"白骨精",3,4,5];
    arr.forEach(function (a) {
        console.log(a);

    });
    var result=arr.slice(1,-1);
    console.log(result);
splice 删除指定元素,并向数组添加新元素。会改变原数组,会将指定元素从原数组中删除,返回删除的元素
参数:开始位置索引,删除元素的数目  新增加的元素
 var arr=[1,"白骨精",3,4,5];
    arr.forEach(function (a) {
        console.log(a);

    });
    var result=arr.splice(1,2);
    console.log(result);//["白骨精", 3]
    console.log(arr);//[1, 4, 5]

  var result=arr.splice(1,2,"牛魔王");
 console.log(arr);// [1, "牛魔王", 4, 5]

去除数组中重复的元素:
var arr=[1,3,3,4,5,3,3,6,1];
//去除重复的数组元素
    for (var i=1;i<arr.length;i++){
        for (var j=0;j<i;j++){
            if (arr[i]==arr[j]){
                arr.splice(i,1);
                j--;
                //当有两个相同的元素紧挨着时,
            //    会出现错误,后边的元素会自动补位
                //此时不会在比较这个位置,需要再比较一下这个位置的元素
               // 因此需要j--
            }
        }
    }

数组的其他方法 :
concat()可以链接两个或多个数组 ,该方法不会改变原数组
 var result=arr.concat(arr2,'xiaoxiao');

join(参数)不会改变原数组 ,将数组转换为一个字符串
var result= arr2.join('#');
    console.log(result);//小小#4#5#pig
不传参数会默认","连接

reverse()
会改变原数组,对数组元素进行反转

sort()对数组中的元素进行排序
会改变原数组。按照unicode 编码进行排序,对于纯数字的排序,也会按照Unicode编码进行排序
对数字排序可能得到错误的结果。

可以自己指定排序的规则
返回>0,元素交换位置,
返回<=0,不交换 
return a-b,升序排列;
return b-a 降序排列

猜你喜欢

转载自blog.csdn.net/weixin_44426449/article/details/107774628