JavaScript有关数组的方法总结
1.数组添加push(),向数组的末尾添加一个或多个元素,并返回新数组的长度。
var arr=[1,2,3];
arr.push(4,5);
arr.forEach(function(index)
{
alert(index);//1,2,3,4,5
});
alert(arr.length);//5
2.删除数组的方法,pop()从尾部弹出,并返回最后一个元素。
var arr=[1,2,3];
alert(arr.pop());//3
alert(arr.length);//2
shift()从头部弹出,并返回第一个元素
var arr=[1,2,3];
alert(arr.shift());//3
alert(arr.length);//2
3.splice()方法既可以从指定位置删除数组元素,也可以从指定位置插入数组元素和替换元素。返回新的数组。
(1) 删除,可以删除任意数量的项,只需要指定2个参数:要删除的起始位置和要删除项的项数。
var arr=[1,2,3,4,5];
arr.splice(1,2);
alert(arr);//1,4,5
(2) 插入,可以向指定位置插入任意数量的项,只需要提供3个参数:插入起始位置、0(要删除的项数)和要插入的项。 如果要插入多个项,可以再传入第四、第五,一直任意多个项。
var arr=[1,2,3,4,5];
arr.splice(1,0,7);//从在第一个位置插入7
alert(arr);//1,7,2,3,4,5
(3) 替换,即在删除的同时插入元素,可以指向指定位置插入任意数量的项,且同时删除任意数量的项,只需要指定3个指定参数:第一个参数为起始位置、第二个参数为要删除的项数、后面的参数为要插入的任意数量。 若插入的项数和删除的项数相等相当于则替换。
var arr=[1,2,3,4,5];
arr.splice(1,2,6,7);
alert(arr);//1,6,7,4,5
4.concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
var arr=[1,2,3];
var str=arr.concat(4,5);
alert(str);//1,2,3,4,5
5 join() 方法用于把数组中的所有元素放入一个字符串。语法为arrayObject.join(str),参数str为分割符号
var arr=['a','b','c','d'];
var str=arr.join('-');
alert(str);//a-b-c-d
var str=arr.join('/');
alert(str);//a/b/c/d
6.split()方法,将一个字符串转换为数组.语法为arrayObject.split(first,second);第一个参数是必需的,为指定分割的位置;第二个参数为返回数组的最大长度
var arr='a b c d';
var str=arr.split(' ',2);
alert(str);//a,b
7.slice()方法可从已有的数组中返回选定的元素,语法形式arrayObject.slice(start,end);第一个参数为起始位置,第二个参数为结束位置。
var arr=['a','b','c','d'];
var str=arr.slice(1,3);
alert(str);//b,c
slice()的另外一种用法是将类数组对象转换为真正的数组。
console.log(Array.prototype.slice.apply({0:1,1:2,length:2}));//[1,2]
8.数组排序sort()方法,该方法只对字符串操作,如果是数字则要先转换成字符串,排序是按照字符编码的顺序进行的。
(1) 字符串排序:
var arr=['1','10','5','7','2'];
console.log(arr.sort());//["1", "10", "2", "5", "7"]
(2)对数字进行排序,则要先建立一个排序函数
var arr=['1','10','5','7','2'];
function sun(a,b){
return a-b;
}
console.log(arr.sort(sun));//["1", "2", "5", "7", "10"]
console.log(arr);//["1", "2", "5", "7", "10"]
需要注意的是:sort()是在在原数组上进行排序,不生成副本,即排序完成后,原数组里面的顺序也已经改变了。
9.数组反转reserve()。
var arr=['a','b','c','d'];
console.log(arr.reverse());//["d", "c", "b", "a"]
console.log(arr);//["d", "c", "b", "a"]
10.数组的遍历forEach()方法。语法:array.forEach(function(currentValue, index, arr), thisValue);currentValue必需,为当前元素;index为当前元素的索引,可选;arr当前元素所属的数组对象,可选。thisValue,可选。传递给函数的值一般用 “this” 值。如果这个参数为空, “undefined” 会传递给 “this” 值。
var arr=['a','b','c','d','e'];
function show(value,index){
document.write('value:'+value+' ');
document.write('index:'+index);
document.write('<br/>');
}
arr.forEach(show);
//value:a index:0
//value:b index:1
//value:c index:2
//value:d index:3
//value:e index:4
thisValue的应用:
var arr=['a','b','c','d','e'];
var obj={
show:function(value,index){
document.write('array1:'+value+' ');
document.write('index:'+index);
document.write('<br/>');
}
}
arr.forEach(function(value,index){
this.show(value,index);
},obj);
//value:a index:0
//value:b index:1
//value:c index:2
//value:d index:3
//value:e index:4
另外数组的遍历不要用for…in方法。
关于一些数组操作的问题可参考这篇文章 [ref]:https://segmentfault.com/a/1190000012463583