数组
数组的定义
数组就是在内存中开辟出一块连续的空间。
数组也是一个变量,可以存储一连串的变量/值。
数组的大小可以动态的调整,并且没有长度的限制。
数组可以存储任意类型的数据。
创建数组
var arr = new Array(); // 创建一个数组
var arr = new Array([size]); // 创建一个数组并指定长度,注意不是上限,是长度
var arr = new Array(element0, element1, ..., elementn); // 创建一个数组并赋值
var arr = [] // 字面量创建数组
var arr = Array.of(element0, element1, ..., elementn) // 将一组值转换成数组
数组的遍历
所谓遍历,是指沿着某条搜索路线(索引),依次对集合(数组)中每个结点(数组元素)均做一次且仅做一次访问。
var arr = [12,'hello',true,20,null,'abc'];
// 挨个访问
arr[0];
arr[1];
arr[2];
arr[3];
arr[4];
arr[5];
每一个数组对象都有一个属性:length。 length属性表示的是该数组的长度,具体说就是数组中拥有多少个元素。
var arr = [1,2,3,4,5,6];
// 数组中拥有6个元素
console.log(arr.length);// 6
利用数组的length属性进行循环遍历操作。
var arr = [1,2,3,4,5,6]
// i=0,正好契合数组的最小索引
// i<arr.length,所以i能够取得的最大值为:arr.length-1,正好契合数组的最大索引
for( var i=0;i<arr.length;i++ ){
console.log(arr[i]);// arr[0], arr[1], arr[2]...
}
for…in循环
var arr = [1,2,3,4,5,6]
// 变量item就是数组的索引号
for( var item in arr ){
console.log(item);
console.log(arr[item]);
}
数组的方法
- 添加删除
push() 向数组末尾添加一个或多个元素,并返回修改后数组的长度
var arr = [1, 2, 3];
arr.push(4);
console.log(arr); // [ 1, 2, 3, 4 ]
console.log(arr.length); // 4
unshift() 在数组头部添加一个或者多个元素,并且返回数组的新长度
var arr = [1, 2, 3];
var a = arr.unshift(0);
console.log(a); // 4
console.log(arr); // [ 0, 1, 2, 3 ]
pop() 删除数组尾部的最后一个元素,并且将这个被删除的元素返回
var arr = [1, 2, 3];
var a = arr.pop();
console.log(arr); // [ 1, 2]
console.log(a); // 3
shift() 删除数组的第一个元素,并且返回被删除的元素
var arr = [1, 2, 3];
var a = arr.shift();
console.log(a); // 1
console.log(arr); // [ 2, 3 ]
- 排序/反转
sort() 默认按字符编码的顺序排列,非string类型会自动转换为string,可自定义比较规则
var arr = [1, 5, 10, 15];
console.log(arr.sort()); // [ 1, 10, 15, 5 ] 比较的是转换的字符串值
// 冒泡排序
function sorts(arr){
var len=arr.length;
for(var i=0;i<len;i++){
for(var j=0;j<len-i;j++){
if(arr[j]>arr[j+1]){
var temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
}
reverse() 将数组元素倒序排列
var arr = [1, 2, 3];
arr.reverse();
console.log(arr); // [ 3, 2, 1 ]
- 拼接
join() 将数组的每个元素以指定的字符连接形成新字符串返回
var arr=[1,2,3,4,5];
// 将数组合并为字符串返回,默认使用,连接
// var str=arr.join();
// 在这里join的参数是字符串的连接符
// var str=arr.join("|");
// ""作为连接符,会将数组元素首尾相连成为字符串
// var str=arr.join("");
concat() 将多个数组拼接成一个数组
var arr=[2,4,6,8,10];
var arr1=arr.concat();
console.log(arr1) // [2,4,6,8,10];
- 选取/截取
slice() 从某个已有的数组返回选定的元素
var arr = [1,3,4,5,6]
slice() // 截取指定长度的数组
参数1:起始位置
参数2:结束位置
arr.slice(1) // [3, 4, 5, 6,]
如果只传入一个参数时该方法会从开始位置截取到数组结束的位置
arr.slice(1,3) // [3, 4]
splice() 从数组中删除项目,然后返回被删除的项目,也可以用作替换操作
var arr=[1,2,3,4,5];
arr.splice(从什么位置开始,删除多少个元素,要插入的元素);
var arr1=arr.splice(); //没有任何参数时,返回一个空数组
var arr1=arr.splice(0,3); //从第0位开始删除3个元素,返回到新数组arr1
var arr1=arr.splice(0,1,-1);从数组的第0位开始,删除1个元素,并且在这个位置插入一个元素 -1,替换
- 查找
indexOf() 返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。.
var arr = [1, 2, 3, 2, 1];
// 从0开始查询值为2的位置
console.log(arr.indexOf(2)); // 1
// 从索引为2开始查询值为2的位置
console.log(arr.indexOf(2, 2)); // 3
includes() 用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
- 遍历
forEach():对数组的每个元素执行一次提供的函数。
//forEach 没有返回值
var arr2=arr.forEach(function(item,index,arr){
});
console.log(arr2);
map() 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
// map会返回一个与原来数组长度相等的新数组
var arr=[3,5,7,9,12,4,6]
var arr1=arr.map(function(item,index,arr){
// console.log(item,index,arr);
return "a"
})
console.log(arr1);
- 筛选
filter() 对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
var arr = [1, 2, 3, 4, 5, 6];
// 取数组中大于3的值重新组成新数组
let newArr = arr.filter(value => value > 3);
console.log(newArr); // [ 4, 5, 6 ]
- 转换
toString():将数组转换为字符串
valueOf():返回数组对象本身,一般会自动调用