JavaScript基础之数组总结
数组的概念:
用一个变量存储一堆数据的数据结构。
【注】JS中数组中数据可以为多种类型的,但是一般情况下,为了代码的可读性,数组中放的是同一个数据类型。
数组的声明:
1.通过new关键字声明
var arr1=new Array();
2.省略new运算符创建数组
var arr2=Array(100,true,"hello");
3.直接赋值
var arr3=[100,true,"hello"];
【注】上述前两种方法中,如果参数只有1个,并且为数字,那么会创建一个长度为这个参数的空数组。
数组的属性: 数组.length 数组元素的个数。 在JS中,数组的length属性是灵活的,可以直接赋值,那么就意味着数组的大小
是灵活的,我们可以通过给length属性赋值来直接改变数组大小。 通过这一点,我又想到,在销毁数组的时候,我们可以用数组.length=0;
感觉非常神奇!!!
【注】元素这个概念是针对于数组中每一个数据来说的。
访问数组的元素:直接数组[下标]访问指定元素
【注】下标是从0开始的。
数组的遍历
1.for循环遍历
var arr=[10,20,30,40,50];
for(var i=0;i<arr.length;i++)
{
console.log(arr[i]+' ');
}
以上代码输出结果为 10 20 30 40 50,完成了数组的遍历。
2.for...in 遍历
for(var i in arr)
{
console.log(arr[i]+' ');
}
以上代码也可以输出 10 20 30 40 50,完成数组遍历。
【注】
for循环遍历,每一次循环它都会对i变量进行判断,执行代码区域,对i变量进行改变;而for...in遍历呢,直接对数组进行查数一样的操作,有几个元素查几次。
区别:相比之下,for循环更加严谨,安全性高;而for...in 直接对数组遍历,运行速度更快,但是相比传统的for循环,安全性比较低。
数组的方法:
说到数组方法,我们要简单了解新名词:栈,队列。
栈其实是一种结构,特征是一头封闭,一头不封闭,生活中很多地方都存在。比如说一个桶,我们放东西在桶里,最先放的在最低层,最后才能拿出去,而且放东西和拿东西只能在同一边。
数组的两个方法形成栈结构:
push方法:数组.push(参数1,参数2,....); 从数组的末尾添加元素,返回值为添加完元素后,数组的新长度。
var arr=[10,20,30,40,50];
console.log(arr.push(60));
console.log(arr);
结果为
6
[10,20,30,40,50,60]
pop方法:数组.pop(); 从数组末尾取一个元素,返回值为这个元素。
var arr=[10,20,30,40,50];
console.log(arr.pop());
结果为 50
队列也是一种结构,特征是从末尾进,从头部出,其实和我们平时排队是一样的。
数组中的两个方法形成队列结构:
shift方法:数组.shift(); 从数组的头部去下一个元素,返回值为这个元素。
var arr=[10,20,30,40,50];
console.log(arr.shift());
结果为 10
unshift方法:数组.unshift(参数1,参数2,....) 从数组的头部添加元素,返回值为添加完元素后,数组的新长度。
var arr=[10,20,30,40,50];
console.log(arr.unshift(0));
console.log(arr);
结果为
6
[0,10,20,30,40,50,60]
concat()方法:数组.concat(参数1,参数2,参数3,....); 把数组1中的元素和参数合并成一个新的数组,返回新数组,原数组不会改变
【注】参数也可以为一个数组, 当参数为数组的时候,会先把数组中的元素单独拆出来再合并。
var arr=[10,20,30,40,50];
var arr1=arr.concat(60,70);
console.log(arr1);
结果为 [10,20,30,40,50,60,70];
slice()方法:数组.slice(start,end); 在数组中获取指定区域的元素[start,end)(start和end都为数组下标),提取出来生成新数组,并返回新数组。
var arr=[10,20,30,40,50];
var arr1=arr.slice(1,2);
console.log(arr1);
结果为 [20]
splice方法:
1.增加
数组.splice(start,length,参数1,参数2,.....); 在数组中,从下标为start的元素开始,截取length长度的元素,组成新数组;然后在start位置开始,插入参数元素,返回新数组。
var arr=[10,20,30,40,50];
var arr1=arr.splice(2,1,"hello");
console.log(arr);
console.log(arr1);
结果为
[10,20,"hello",40,50]
[30]
2.删除
数组.splice(start,end); 在数组中, 删除下标在start和end之间的元素,形成新数组,
返回删除元素组成的数组。
var arr=[10,20,30,40,50];
var arr1=arr.splice(1,2);
console.log(arr);
console.log(arr1);
结果为
[10,40,50]
[20,30]
3.修改(先删除,再增加)
数组.splice(start,length,参数) 在数组中,下标从start的元素开始,删掉长度length个元素,再从start位置开始添加参数。
【注】1和3是同一个方法,但是目的不一样,所以区分开,以便于以后使用。
var arr=[10,20,30,40,50];
arr.splice(2,1"hello");
console.log(arr);
结果为 [10,20,"hello",40,50]
join方法:数组.join(拼接符); 将数组中的元素,用传入的拼接符,拼接成一个字符串,返回拼接好的字符串。 一般我们用这个方法来把数组变为字符串。
var arr=[10,20,30,40,50];
var arr1=arr.join("==");
console.log(arr1);
结果为 10==20==30==40==50
reverse方法:数组.reverse(); 将数组中的元素进行逆序操作,这个操作是根据下标进行的。
var arr=[10,20,30,40,50];
var arr1=arr.reverse();
console.log(arr1);
结果为 [50,40,30,20,10]
sort方法:数组.sort(); 对数组进行排序。
【注】 这个方法其实是有问题的,如果数组中存在大于10的数,那么排序就不会完成,原因就是这个方法会先把数组中的数字转化为字符串,是按照字符串比大小的方式进行的,根据字符串比较规律,第一位可以比出大小,那么直接返回结果。
解决方法: 在调用sort方法的时候传入一个函数,具体看下列操作
var arr=[1,10,20,15,25,5];
arr.sort(function(num1,num2){
return num1-num2;
})
num1-num2为升序;num2-num1为降序。
以上就是平时数组所能用到的方法,写的再好,不如多练! 加油!
- 点赞
- 收藏
- 关注作者
评论(0)