数组常用方法

128 阅读1分钟

1. slice 返回数组片段

var a = ['a','b','c','d','e','f','g'];
alert(a.slice(1,2));  // -> b
alert(a.slice(2));    // -> c,d,e,f,g
alert(a.slice(-4));   // -> d,e,f,g
alert(a.slice(-2,-6));    // -> 空

a.slice(1,2),从下标为1开始,到下标为2之间的数,注意并不包括下标为2的元素
如果只有一个参数,则默认到数组最后
-4是表示倒数第4个元素,所以返回倒数的四个元素
最后一行,从倒数第2开始,因为是往后截取,所以显然取不到前面的元素,所以返回空数组,如果改成 a.slice(-6,-2) 则返回b,c,d,e

2. splice 从数组删除某片段的元素,并返回删除的元素

var a = [1,2,3,4,5,6,7,8,9];
document.write(a.splice(3,2));    // -> 4,5
document.write(a);        // -> 1,2,3,6,7,8,9
document.write(a.splice(4));  // -> 7,8,9 注:IE下返回空
document.write(a);        // -> 1,2,3,6
document.write(a.splice(0,1));    // -> 1
document.write(a);        // -> 2,3,6
document.write(a.splice(1,1,["aa","bb","cc"]));   // -> 3
document.write(a);        // -> 2,aa,bb,cc,6
document.write(a.splice(1,2,"ee").join("#")); // -> aa#bb
document.write(a);        // -> 2,ee,cc,6
document.write(a.splice(1,2,"cc","aa","tt").join("#"));  // -> ee#cc
document.write(a);        // -> 2,cc,aa,tt,6

3. sort 数组排序

  1. 对数字
var arr=[12,78, 335, 21, 2];

//arr.sort();	//默认的情况下,他会把所有的东西都当做字符串处理
arr.sort(function (num1, num2){
	return num1-num2;
});

alert(arr);
  1. 对中文
var arr=['张三', '石川', '刘伟', '莫涛', '杜鹏', '阿杜', '毕加索'];

arr.sort(function (str1, str2){
	return str1.localeCompare(str2);
});

//只要能用原生方法的时候,就不要自己写

alert(arr);

4. 数组去重

function hasContain(arr, num)
{
	var i=0;
	
	for(i=0;i<arr.length;i++)
	{
		if(arr[i]==num)
		{
			return true;
		}
	}
	
	return false;
}

var arr=[1,2,3,4,1,5,6,4,8];
var aResult=[];
var i=0;

for(i=0;i<arr.length;i++)
{
	if(!hasContain(aResult, arr[i]))
	{
		aResult.push(arr[i]);
	}
}

alert(aResult);

5. 数组复制

var arr1=[1,2,3];
var arr2=arr1.concat([]);

arr2.push(4);

alert(arr1);