JavaScript 数组的常用方法
添加或删除数组元素的方法
push()
可以向数组的末尾
添加一个或多个元素,多个元素一次性
添加(并不是一个一个添加);
把要添加的元素作为方法的参数;
并返回数组的新长度;
var arr = [1,2,3];
console.log(arr);
var l = arr.push("lin",[23,45]); //添加两个元素,并返回长度l
console.log(arr);
console.log("数组的新长度:"+l);
pop()
可以在数组的末尾
删除最后一个元素,不需要参数,并返回该元素
var arr = [1,2,3];
console.log(arr); //1,2,3
var pop1 = arr.pop();
console.log(arr); //1,2
console.log("从尾部删除的元素是:"+pop1); //3
push()、pop() 方法类似于把数组当成了一个栈
来处理了。
unshift()
可以向数组的头部
添加一个或多个元素,多个元素一次性
添加(并不是一个一个添加)
注意:一次性添加和一个一个添加是不一样的。
- 如果是一次性添加,要添加的多个元素按照原来的
顺序
添加到数组中; - 如果是一个一个添加,要添加的多个元素按照原顺序的
倒序
添加到数组中;
把要添加的元素作为方法的参数。
并返回数组的新长度。
var arr = [1,2,3];
console.log(arr);
var l = arr.unshift("lin",[23,45]);
console.log(arr);
console.log("数组的新长度:"+l);
shift()
可以在数组的头部
删除一个元素,不需要参数,并返回该元素
var arr = [1,2,3];
console.log(arr);
var shift1 = arr.shift();
console.log(arr); //2,3
console.log("从头部删除的元素是: "+shift1); //1
遍历数组的方法
for循环遍历
var arr = [123,456,789];
for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}
forEach() 方法遍历
注意:IE 浏览器中只有 IE 8 以上的版本才支持 forEach() 方法。
forEach() 方法中,要传入一个函数作为参数,通常是一个匿名函数,该函数叫回调函数。
回调函数:由开发者声明,由浏览器调用的函数。
该回调函数中可以有三个参数(也可以部分或全部省略):
- 第一个参数:表示每一个元素的值;
- 第二个参数:表示每一个元素的索引;
- 第三个参数:表示该数组对象本身。
var arr = [123,456,789];
arr.forEach(function(value,index,obj){
console.log(obj+"数组的第"+index+"个元素是:"+value);
});
可见,数组有几个元素,回调函数调用几次。
slice() 方法
功能:返回一个数组的指定元素(一个或多个)。
slice() 方法有两个参数(可以省略一个):
- 第一个参数:表示
开始
截取的索引值,截取的元素包含该索引; - 第二个参数:表示
结束
截取的索引值,截取的元素不包含该索引;当省略该参数时,表示从开始的索引截取到改数组的最后一个元素。
参数值可以是负数,表示倒数第几个元素。
var arr = [123,456,78,9];
newArr1 = arr.slice(0,2); //获取索引0到2的元素,不包括索引为2的元素
console.log(newArr1);
newArr2 = arr.slice(1); //获取索引大于等于1的元素
console.log(newArr2);
newArr3 = arr.slice(-3,-1); //获取倒数第3到倒数第1的索引的元素,不包括倒数第1的元素
console.log(newArr3);
console.log(arr); //原数组不变
splice() 方法
功能:从数组中删除元素,并返回删除的元素,同时可以添加元素。
splice() 方法参数:
- 第一个参数:表示开始删除元素或添加元素的
索引
位置。 - 第二个参数:表示要删除的元素的
数量
。 - 第三个参数及以上:表示要
添加的元素
,一次性
添加到第一个参数的位置,后面的元素往后移。
表示只删除元素不添加(省略第三个参数),如:
var arr = [123,456,789];
var result = arr.splice(1,2); //从索引1开始,删除2个元素
console.log(arr); //删除元素后的数组
console.log(result); //删除的元素
表示只添加不删除(删除的元素数量为0),如:
var arr = [123,456,789];
var result = arr.splice(2,0,"lin","hong"); //从索引为2的位置开始,删除0个元素(不删除),并在索引2的位置开始添加"lin"、"hong"2个元素
console.log(arr);
console.log(result); //不删除,返回空字符串
concat() 方法
功能:将数组与一个或多个数组或元素连接起来,返回一个新的数组。
var arr1 = [123,456,789];
var arr2 = ["lin","hong"];
var arr3 = [true,145,[147,[258,369]]];
var result = arr1.concat(arr2,arr3,"lian");
console.log(result);
join() 方法
功能:将数组转换成字符串
并返回。
参数:数据类型:字符串;将该字符串作为分隔符,分隔开元素。
当省略参数时,默认分隔符为逗号;当不需要分隔符时,可以以空串
作为分隔符。
var arr = [123,456,789];
var result = arr.join("-"); //以-为分隔符
console.log(result);
result = arr.join(""); //不需要分隔符
console.log(result);
reverse() 方法
功能:将数组倒序。
var arr = [123,456,789];
arr.reverse(); //倒序
console.log(arr); //789,456,123
sort() 方法
功能:将数组排序。
参数:传入一个回调函数,回调函数中传入两个元素,根据返回值指定排序规则。
浏览器会使用数组中的元素去调用回调函数:
- 如果返回大于 0 的值,则两个元素交换位置;
- 如果返回小于或等于 0 的值,则两个元素不交换位置。
如果没有参数,默认按照 Unicode 编码进行排序。纯数字元素也是按照编码排序,并不是按照数值大小排序。
默认情况下:
var arr = [456,147,78,123];
arr.sort();
console.log(arr); //123,147,456,78
传入回调函数,指定升序排序:
var arr = [456,147,78,123];
arr.sort(function(a,b){
if(a>b){
return 1;
}else if(a<b){
return -1;
}else{
return 0;
}
});
console.log(arr); //78,123,147,456
以上代码可以简化为:
var arr = [456,147,78,123];
arr.sort(function(a,b){
return a-b; //当a>b时,返回值>0;当a<b时,返回值<0;当a==b时,返回值等于0
});
console.log(arr);
记忆:a-b :升序;b-a:降序
。