数组的各种方法,遍历数组

数组

数组里面的所有内容称为元素,简称元

每个元素,对应的一个索引数,这个索引数叫做下标

根据变量[下标]就可以获取到这个变量数组的下标所对应索引的元素

arr[0]=1
1元素
arr  数组变量
0下标  索引值
arr[0]   下标变量

下标是从0开始,第一个元素对一个的下标是0

因为这个100表示第101个元素,因此,数组先有101个元素,可是原数组只有4个元素,就会自动生成96个元素,在里面,这些都是空元素
arr[100]=20;
length 长度  数组的元素数量

length是最大下标+1  最大下标=length-1
console.log(arr.length);
在末尾添加元素1
arr[arr.length]=1;
修改最后一个元素的结果
arr[arr.length-1]=10;
如果设置的length的长度比原有的长度大,这就会将数组的元素数量增多,并且补充空元素在数组末尾
arr.length=10;
如果设置的length的长度比原有的长度小,这就将数组的元素进行删除,只保留给定的长度
arr.length=2
如果length为0时,表示清空数组
arr.length=0
如果设置length--时,表示删除数组的最后一个元素
arr.length--

数组的方法

数组只要改变长度就会改变

数值没有引用关系

push 给数组的尾部添加一个或者多个元素,返回数组的新长度,改变原数组,改变数组的长度

unshift 尽量不要使用unshift

在数组的最前面添加一个或者多个元素,并且返回数组的新长度,改变原数组,改变数组的长度

pop 删除数组尾部的一个元素,并且将这个删除元素返回,改变原数组,改变数组长度

shift 删除数组头部的一个元素,并且将这个删除元素返回,改变原数组,改变数组长度

//第一种
var len=arr.length;
for(var i=0;i<len;i++){
arr.pop();
}
console.log(arr);
                        
//第二种                    
while(arr.length>0) arr.pop();
console.log(arr);
    
//第三种
var item=arr.shift();
console.log(arr,item);

concat 将多个数组及元素合并为一个新数组,原数组不发生改变

 连接一个数组
     var arr2=arr.concat(arr1);
     连接多个数组
        var arr2=arr.concat(arr1,[9,10,11]);
        连接多个数组及元素
        var arr2=arr.concat(arr1,9,10,[11,12],13);
        复制一个新数组,浅复制
        var arr2=arr.concat();

toString 将数组转换为字符串,使用逗号(,)链接每个元素,并且返回这个字符串,原数组不发生改变

数组隐式转换为字符串时,会自动调用toString

join 将数组以给入的参数作为间隔符 连接为一个字符串,如果间隔符是空字符串,则将每个元素紧密连接在一起,返回这个字符串,原数组不发生改变

slice 将数组中第几位开始到第几位之前的所有元素截取返回一个新数组,原数组不变

slice(开始位置,结束位置)

arr.slice();开始位置没有赋值,结束位置也没有赋值,开始位置默认从0开始,结束位置默认到数组尾部,这样做可以复制数组

var arr1=arr.slice(2);结束位置没有赋值,默认到数组尾部

开始和结束位置都可以给负数,负数就是倒数第几位,也可以使用arr.length+(负数)
连缀 用前面方法返回得到结果用于后面的方法
var str=arr.slice(-3).join("");
console.log(str);

splice

在数组中删除,替换,插入,新的多个元素,改变原数组,并且返回一个由删除元素组成的新数组
arr.splice(开始位置,删除几个,插入的元素...)

 var arr1=arr.splice();
如果没有开始位置,不会删除元素,返回一个空数组

var arr1=arr.splice(2); 
如果只有开始位置,没有删除几个,就会删除到数组的尾部

var arr1=arr.splice(1,2);
从下标为1的位置开始删除2个元素,返回被删除的这两个元素

 var arr1=arr.splice(1,2,"z"); 
 从下标为1的位置开始删除2个元素,并且在这个位置插入一个字符z,返回被删除的两个元素组成的新数组

 var arr1=arr.splice(1,2,"y","z");
 var arr1=arr.splice(1,0,"y","z"); 
 如果删除的数量为0时,表示不删除,在这个位置插入y,z两个字符,并且返回一个空数组

数组遍历

for和for in区别

1.for会遍历到空元素,但是for in不会遍历到

for in遍历时 主要是针对对象,目的时遍历key value这种键值对,因此for in使用变量会自动转换为字符串,数组是由对象创建来的,所以可以理解为数组中的下标就相当于对象中key,元素相当于对象中value,for in的前提必须是键值对,也就是说必须由键有值,数组中空元素,仅有下标没有值,不能成为键值对,因此,在for in中不做遍历

2.for循环时仅遍历数组的元素,但是for in循环时会遍历到数组元素之外的数组属性

 var arr=["a",,"b","c",undefined,"d","e","f"];
        arr.a=10;
        for(var i=0;i<arr.length;i++){
            if(i in arr) console.log(arr[i]);
            
        }

forEach 遍历数组的每个元素,并且执行forEcah函数中回调函数

arr.forEach(回调函数)  回调函数中里面有3个参数,分别对应的是数组的元素,下标,数组本身
        arr.forEach(function(item){

        })

map 遍历数组的每个元素,并且执行map函数中回调函数,将这个回调函数中return的结果分别储存在一个新数组的当前下标对应位置,并且返回这个新数组,原数组不改变

for Each 和map的区别

forEach仅遍历数组的每个元素,map不但遍历数组的每个元素,还会将回调函数中return返回的结果放在一个新数组对应下标的位置,返回这个新数组,map使用后,返回的新数组与数组的长度相等

如果没有使用return返回,该项就是undefined

indexOf

arr.indexOf(元素,从下标第几位开始向后查找)
查找元素所对应的下标,如果找到了就返回第一个下标,如果没有找到返回-1;

lastIndexOf

arr.laseIndexOf(元素,从下标第几位开始向后查找)
从后向前查找元素所对应的下标,如果找到了就返回找到第一个下标,如果没有找到返回-1

includes

arr.includes(元素);
判断当前数组中是否有这个元素,如果有返回true,否则返回false 

posted @ 2021-12-14 17:02  满天星可以嘛  阅读(251)  评论(0编辑  收藏  举报