数组
1、数组是什么
数组是指的有序列表。数组中的每个值叫做一个元素,而每个元素在数组中都有一个唯一的位置。这个位置用数字表示,叫做索引数据;用字符串表示,叫做关联数组。
2、一维数组
定义数组
字面量方式:
var arr=[1,2,3 ];
console.log(arr);
结果:[ 1, 2, 3 ]
构造函数方式:
var arr=new Array(1,2,3);
console.log(arr);
结果:[ 1, 2, 3 ]
索引数组
var arr=[]
arr[0]=1;
arr[2]=2;
console.log(arr);
结果:[ 1, , 2 ]
值得注意的是: 索引数组的下标是从 0 开始的。
关联数组
var arr=[]
arr["num"]=1;
arr["str"]='a';
arr["bool"]=true;
console.log(arr);
稀疏数组
var arr = [] // 创建一个空数组
arr[10] = "a";
console.log(arr);
结果:[ , , , , , , , , , , 'a' ]
数组的长度
var arr=[1,3,5,7]
console.log(arr.length);
结果:4
var arr=[]
arr[10]='a';
结果:11
遍历数组元素
var arr=[1,3,4,true,null]
for(var i=arr.length-1;i>=0;i- -){
console.log(i+":"+arr[i]);
}
结果:0:1
1:3
2:4
3:true
4:null
还可以使用for..in进行遍历
var arr=[1,3,4,true,null]
for (var i in arr){ //i表示当前数组的下标
console.log(i+":"+arr[i]);
}
结果:0:1
1:3
2:4
3:true
4:null
3、二维数组
数组是可以嵌套的,这就意味着一个数组可以作为一个元素被包含在另外一个数组里面。利用JavaScript 这个特点,创建二维数组,即数组的数组。
定义数组
var arr=[];
var arr=new Array(arr);
console.log(arr);
结果:[ [] ]
二维数组的获取
读取二维数组的具体元素
var arr=[[1,2,3],[23,45,67],[98,76,57]]
console.log(arr[1][2]);
结果:67
二维数组的遍历
var arr=[[1,2.3],[23,45,67],[98,76,57]]
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length;j++){
console.log("["+i+"]["+j+"]"+":"+arr[i][j]);
}
}
结果:
[0][0]:1
[0][1]:2
[0][2]:3
[1][0]:23
[1][1]:45
[1][2]:67
[2][0]:98
[2][1]:76
[2][2]:57
4、数组常见的方法:
检查数组
如何确定是一个数组,有一下几种检查方法:
1.instanceof:
var arr=[1,2,3]
instanceof:console.log(arr instanceof Array);//true/false
2.Object.prototype.toString.call(arr);返回[object Array]
3.Array.prototype.isPrototypeOf(arr);返回true/false
4.Array.isArray(arr);返回true/false
转换方式
toString();把数组转换成为字符串,并返回结果
var arr=[1,2,3]
var result=arr.toString();
console.log(result);
console.log(Object.prototype.toString.call(arr));//[object Array]
valueOf();返回数组对象原始值
进出栈方式
push();
向数组的末尾添加一个或多个元素,返回新的长度
pop();删除数组的最后一个元素,并返回删除的元素
unshift();向数组的开头添加一个或多个元素,返回新的元素
shift();删除并返回数组的第一个元素
相关代码:
var arr[2,4,6,3,6,9]
var result=arr.push(2);
console.log(result);//7
var result=arr.pop();
console.log(result);//[9]
var result=arr.unshift(3);
console.log(result);//7
var result=arr.shift();
console.log(result);//2
排序方法
reverse()
反转数组的元素
相关代码:
var arr=[2,4,6,3,6,9]
var result=arr.reverse();
console.log(result);
结果:[ 9, 6, 3, 6, 4, 2 ]
sole();
对数组的元素进行排序
相关代码:
var arr=[2,4,6,13,6,9]
var result=arr.sort();
console.log(result);
结果:[ 13, 2, 4, 6, 6, 9 ]
var arr=[2,4,6,13,6,9]
var result=arr.sort(function (a,b) {
return a>b;//从小到大
//return a<b;从大到小
});
console.log(result);
结果:[ 2, 4, 6, 6, 9, 13 ]
值得注意的是:reverse();和sort();方法的返回值是经过排序之后的数组。
连接方式
concat();
连接两个或更多的数组,并返回结果。
var arr=[2,4,6,13,6,9]
var result=arr.concat(1,2);
console.log(result);
结果:[ 2, 4, 6, 13, 6, 9, 1, 2 ]
操作方法
slice();
选取数组的一部分,并返回一个新数组。
slice(start, end)方法 - 截取数组
* start - 表示截取的开始位置
* end - (可选项)表示截取的结束位置,不包含当前end这个位置的数据
* 如果默认省略,表示截取到当前数组的最后
* 如果start和end为负值的话,表示从右向左计算
相关代码:
var arr=[2,4,6,13,6,9]
var result=arr.slice(2,4);
console.log(result);
结果:[ 6, 13 ]
splice();
从数组中添加或删除元素
splice(index,howmany);方法
* index - 表示添加或删除或替换的位置
* howmany - 表示删除/添加/替换的个数
* 后面所有的参数 - 表示被添加的数据内容
相关代码:
var arr=[2,4,6,13,6,9]
var result=arr.splice(1,2,3);
console.log(result);
console.log(arr);
结果:
[ 4, 6 ]
[ 2, 3, 13, 6, 9 ]
位置方法
JavaScript 提供了如下方法,用于获取数组中指定元素的索引值:
**indexOf();**搜索数组中的元素,并返回它所在的位置
**lastinndexOf();**返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
相关代码:
var numbers = [ 1, 2, 3, 4, 5 , 4, 3, 2, 1 ];
console.log( numbers.indexOf( 4 ) );// 3
console.log( numbers.lastIndexOf( 4 ) );// 5