一. 创建数组
- 字面量方式创建
var arr = [1,"2",{name:"kedar"},false,[1,2,3]]; // 里面可以容纳任何类型的值
- new Array()
var arr = new Array(); // 创建空数组
var arr1 = new Array(9); // 传入一个参数规定数组的长度
var arr2 = new Array(9,{name:"dog"}); // 传入多个参数则作为数组的元素
二. 检测是否为数组
- instanceof
var arr = [1,2,3];
arr instanceof Array; // true
- Array.isArray()
var arr = [];
Array.isArray(arr); // true
- 对象原型上的方法 toString()
var arr = [];
Object.prototype.toString.call(arr); // [object Array]
三. 数组的相关方法
1. 增加、删除元素的方法
var arr = [];
arr.push(1,2);
"数组末尾添加一个或多个元素,修改原数组,返回长度"
arr.pop();
"删除数组最后一个元素,修改原数组,返回删除的值,如果没有元素返回undefined"
arr.unshift();
"在数组最前面添加一个或多个元素,修改原数组,返回新长度"
arr.shift();
"删除数组的第一个元素,修改原数组,返回删除元素的值"
2. 数组排序
reverse() 和 sort()
var arr = [1,2,3,4,5,6,7,8];
var newArr = arr.reverse();
"颠倒数组元素的顺序,修改原来的数组,返回新数组"
console.log(arr); //(8) [8, 7, 6, 5, 4, 3, 2, 1] 数组被修改
console.log(newArr); //(8) [8, 7, 6, 5, 4, 3, 2, 1]
var arr =[2,3,5,1,8,7,6,9,4];
var newArr = arr.sort(function(a,b){
if(a < b){
return -1;
}
if(a > b){
return 1;
}
return 0; // 必须是 a 和 b 相等的情况
});
console.log(arr); // (9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
- 如果省略参数,sort()会按照转换为字符串的各个字符的Unicode位点进行排序。
- 两个比较元素,a 和 b, 如果它们的比较小于 0 ,那么 a 会 放到 b 之前,等于 0 位置不变,大于零 b 会 放到 a 之前。
3. 获取数组索引
var arr = [9,8,8,6,5,4,2,2,1];
arr.indexOf(8);
"数组中查找给定的元素的第一个索引,存在返回索引号,不存在返回 -1"
arr.lastIndexOf(2);
"查找给定元素的最后一个索引,存在返回索引号,不存在返回 -1"
4. 数组转换为字符串
var arr = [1,2,3,4,5,6,7,8,9];
console.log(arr.toString()); // 1,2,3,4,5,6,7,8,9
console.log(arr.join()); // 1,2,3,4,5,6,7,8,9
- join()不传入参数则按照 ”,“ 拼接元素。
5. 其他方法
var arr1 = [1,2,3];
var arr2 = [4,5,6];
Array.concat(arr1,arr2);
"连接两个或多个数组,不修改原数组,返回新数组"
// (6) [1, 2, 3, 4, 5, 6]
arr1.slice(1,2);
"截取数组,第一个参数是从哪个索引开始,第二个参数是截取到哪个参数(不包括那个参数),返回被截取的数组"
arr2.splice(beginIndex,deleteAmount,...params);
"beginIndex:从第几个开始截取,deleteAmount截取长度,..params 填入参数,返回被删除的数组,且原数组会被修改"
arr1.forEach(function(value,index,array){
"value : 数组的元素"
"index : 数组元素的索引"
"array : 遍历的数组"
"相当于遍历数组,没有返回值"
})
arr1.filter(function(value,index,array){
return value > 1; // [2,3]
"形参与forEach一样,返回新数组"
})
arr1.some(function(value,index,array){
return value >1; // true
"返回布尔值,只要数组里面有符合条件的参数就返回true并且立即终止循环"
})