创建数组
利用数组字面量
代码语言:javascript复制 var arr = [1, 2, 3];
console.log(arr[0]);
利用new Array()
代码语言:javascript复制 //var arr1 = new Array(); //创建了一个空数组
//var arr1 = new Array(2); //这个2表示数组长度为2,里面有2个空的数组元素
var arr1 = new Array(2, 3); //等价于[2,3] 表示里面有2个数组元素是2和3
console.log(arr1);
检测是否为数组
instanceof
运算符,它用来检测是否为数组
var arr = [];
var obj = {};
console.log(arr instanceof Array);
console.log(obj instanceof Array);
Array.isArray(参数)
用于确定传递的值是否是一个 Array
。
Array.isArray(参数)
H5新增的方法,IE9以上支持。
var arr = [];
var obj = {};
console.log(Array.isArray(arr));
console.log(Array.isArray(obj));
注意:当检测Array实例时, Array.isArray
优于 instanceof
,因为Array.isArray能检测 iframes
.
添加数组元素
push()
在我们数组的末尾添加一个或者多个数组元素
var arr = [1, 2, 3];
arr.push(4, 'zeyi');
console.log(arr); //(5) [1, 2, 3, 4, 'zeyi']
push
可以给数组追加新的元素。push()
参数直接写数组元素就可以。push
完毕之后,返回的结果是新数组的长度。- 原数组也会发生变化。
unshift
在我们数组的开头添加一个或者多个数组元素
arr.unshift('Yue')
console.log(arr);//(6) ['Yue', 1, 2, 3, 4, 'zeyi']
unshift
可以给数组追加新的元素。unshift()
参数直接写数组元素就可以。unshift
完毕之后,返回的结果是新数组的长度。- 原数组也会发生变化。
删除数组元素
pop()
可以删除数组的最后一个元素。
console.log(arr); //(6) ['Yue', 1, 2, 3, 4, 'zeyi']
arr.pop();
console.log(arr); //['Yue', 1, 2, 3, 4]
console.log(arr.pop()); //4
pop
可以删除数组的最后一个元素,一次只能删除一个元素pop()
没有参数pop
完毕之后,返回的结果是删除的那个元素- 原数组也会发生变化
shift
可以删除数组的第一个元素。
console.log(arr); //['Yue', 1, 2, 3, 4]
console.log(arr.shift()); //Yue
console.log(arr); //(3) [1, 2, 3]
shift
可以删除数组的最后一个元素,一次只能删除一个元素shift()
没有参数shift
完毕之后,返回的结果是删除的那个元素- 原数组也会发生变化
筛选数组
例:有一个包含工资的数组[1500,1200,2000,2100,1800],要求把数组中工资超过2000的删除,剩余的放到新数组里面。
代码语言:javascript复制 var arr = [1500, 1200, 2000, 2100, 1800];
var newArr = [];
for (var i = 0; i < arr.length; i ) {
if (arr[i] < 2000) {
//newArr[newArr.length] = arr[i];
newArr.push(arr[i]);
}
}
console.log(newArr);
数组排序
翻转数组
代码语言:javascript复制 var arr = ['Yue', 'Zeyi'];
arr.reverse();
console.log(arr); //(2) ['Zeyi', 'Yue']
数组排序(冒泡排序)
代码语言:javascript复制 var arr = [2, 5, 4, 7, 1];
arr.sort();
console.log(arr); //(5) [1, 2, 4, 5, 7]
这种排列只针对单位数,如果双位数会依照1,11,2,22这种顺序排列。
升序排列
代码语言:javascript复制 var arr = [2, 5, 14, 7, 1];
arr.sort(function(a, b) {
return a - b; //升序顺序排列
});
console.log(arr); //(5) [1, 2, 5, 7, 14]
降序排列
代码语言:javascript复制 var arr1 = [2, 5, 14, 7, 1];
arr1.sort(function(a, b) {
return b - a; //降序顺序排列
});
console.log(arr1);
数组索引方法
indexOf(数组元素)
返回该数组元素的索引号,从前面开始查找。、
var arr = ['red', 'blue', 'green', 'blue'];
console.log(arr.indexOf('blue')); //1
console.log(arr.indexOf('zeyi')); //-1
console.log(arr.lastIndexOf('blue')); //3
lastIndexOf(数组元素)
返回该数组的索引号,从后面开始查找。
var arr = ['red', 'blue', 'green', 'blue'];
console.log(arr.lastIndexOf('blue')); //3
注意:
- 只返回第一个满足条件的索引号
- 如果在该数组里面找不到元素,则返回 -1
数组去重
问题:把旧数组里面不重复的元素选取出来放到新数组中,重复的元素只保留一个,放到新数组中去重。
解决:遍历数组,然后拿着旧数组元素去查询新数组,如果该数组里面没有出现过,就添加,否则不添加。
代码语言:javascript复制 //封装一个函数
function unique(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i ) {
if (newArr.indexOf(arr[i]) === -1) { //利用新数组.indexOf(数组元素)如果返回-1说明新数组里面没有该元素
newArr.push(arr[i]); //然后添加到新数组
}
}
return newArr;
}
var demo = unique(['a', 'c', 'd', 'b', 'c'])
console.log(demo); //(4) ['a', 'c', 'd', 'b'
数组转换为字符串
toString()
将我们的数组转换为字符串
var arr = ['1', '2', '4', '3'];
console.log(arr.toString()); //1,2,4,3
join(分隔符)
var arr = ['red', 'blue', 'green', 'blue'];
console.log(arr.join()); //red,blue,green,blue
console.log(arr.join('-')); //red-blue-green-blue
console.log(arr.join('&')); //red&blue&green&blue
其他方法
方法名 | 说明 | 返回值 |
---|---|---|
concat() | 连接俩个或者多个数组,不影响原数组 | 返回一个新的数组 |
slice() | 数组截取slice(begin,end) | 返回被截取项目的新数组 |
spliece() | 数组删除splice(第几个开始,要删除的个数) | 返回被删除项目的数组,会影响原数组 |
slice()
和spliece()
目的基本相同,重点看splice()