这里主要介绍一些数组的常用方法:
arr.isArray():用来检测一个对象是否是数组。
var arr = [2, 4, 6, 3];
arr[arr.length] = 12;
console.log(Array.isArray(arr));
Array.join():传入一个分隔符,返回由当前数组中的每一项的字符串形式拼接,并被分隔符分割的字符串;不操作原数组。
var arr = [2, 4, 6, 3];
console.log(arr.join("-"));//2-4-6-3
Array.pop()和
Array.push()
:前者去除数组中的最后一项,并返回之,操作原数组,后者在数组后面添加几项,返回新的数组长度,也是操作原数组。
// push方法:
var arrNum = [3, 5, 7, 8, 1];
console.log(arrNum.push(3, 4)); //7
console.log(arrNum.push(12)); //8
console.log(arrNum.push(12, 13, 45)); //11
console.log(arrNum.length);
// pop()方法:
console.log(arrNum.pop()); //45;
console.log(arrNum.length); //10
Array.shift()和Array.unShift():前者去除数组中的第一项,并返回之,后者作用是从数组的前面插入若干项(可以有多项,“,”隔开),并返回数组改变后的长度length,操作原数组。
// shift()方法:
var greetingStr = ["hello", "hi", "hey", "oh"];
console.log(greetingStr.shift()); //hello
console.log(greetingStr[0]); //hi,因为原来的第一项已经移出了;
console.log(greetingStr.length); //3,hi,hey,oh
//unshift()方法
console.log(greetingStr.unshift("HaA")); //4;
console.log(greetingStr); //"HaA","hi","hey","oh"];
Array.sort():从小到大排列,操作原数组,返回排序过后的数组。还有一个方法是
reverse()方法,其作用是反转数组项的顺序,不参与排序,返回反转过后的数组,操作原数组;
var arrInit = [3,5,4,1,6,9,0,3,2,5];
var arrSorted = arrInit.sort();
console.log(arrSorted);//排序过后的数组
console.log(arrInit==arrSorted) ;//true,说明操作原数组
console.log(arrInit)//排序过后的数组
不过,直接用sort()方法排序并不合适,因为sort在进行数组项间的比较的时候会自动调用数组项的toString()方法,也就是说其实比较的是数组项的字符串形式,所以最常用的排序方法是这样的:
//经典的排序方法;sort
function compareFunc(num1,num2){
if(num1>num2){
return 1
}else if(num1<num2){
return -1
}
else{
return 0
}
}
var arrinit1 = [3,8,2,8,2,3,4,1,6,7,2];
console.log(arrinit1.sort(compareFunc));//从小到大排序过后的数组
console.log(arrinit1)
Array.concat():作用是将concat()方法中的参数拼接到数组的后面并返回一个新的数组,不操作原数组(其实操作的是原数组的副本);接受的参数可以是数组,也可以是非数组,并且可以有多个参数;
var arrCon = [1,3,2,5];
var arrBeh = [4,5,14,5];
var num1 = 10;
console.log(arrCon.concat(num1,arrBeh));//[1,3,2,5,10,4,5,14,5]
console.log(arrCon)//[1,3,2,5]
Array.slice():从数组中截取一部分数组,生成新的数组(并返回),不操作原数组,可以有一个或两个参数表示将要作为返回项的起始位置和结束位置;如果一个参数,则从该位置开始直至截到最后;两个参数,则不包含结束位置项,如果参数中有负值,那么内部会先加上原数组的长度再执行;如果起始位置比结束位置大,那么返回空数组;
var initArr = [7,2,1,5,2];
console.log(initArr.slice(1,3))//[2,1];
console.log(initArr.slice(-1,1))//[]
Array.splice():可以说是数组方法中最强大的一个方法,几乎可以模拟实现任何数组其他方法的功能;
,主要功能是向数组中插入项(可以是多项),其实,该方法可以做的事情有很多,主要分为:
1.删除:splice(index,long),意思是从原数组的下标为index的项起,删除long项;
2.插入:splice(index,0,inele1,inele2...).意思是从下标为index 的那一项起,删除0项,然后再从index项开始插入inele1和inele2等;
3,替换splice(index,long,inele1,inele2,...)意思是从下标为index 的那一项起,删除long项,然后再从index项开始插入inele1和inele2等;
splice方法会操作原来的数组,执行完splice()方法之后原来的数组变成了处理过后的数组,每次执行完splice()方法会返回一个由删除项组成的数组(没有删除项,则是空数组);
var spArrInit = [18,17,16,15,14];
//删除
var neArr = spArrInit.splice(2,2)
console.log(neArr);//[16,15]
console.log(spArrInit)//[18,17,14]
//添加
var heArr = spArrInit.splice(1,0,34,35,38);
console.log(heArr);//[]
console.log(spArrInit)//[18,34,35,38,17,14];
//替换
var heArrNew = spArrInit.splice(1,3,10,1000,1999);
console.log(heArrNew);//[34,35,38]
console.log(spArrInit)//[18,10,1000,1999,17,14];
indexOf(item,[startIndex])和lastIndexOf(item,[startIndex]):都表示要查找某一项,其中item表示要查找的项,startIndex表示开始查找的起始下标;只不过indexOf要从前往后查(全等),而lastIndexOf表示从后往前查(仅仅是查找的方向不同而已),不过最后都要返回查找到的项的真实下标,如果找不到则返回-1。
var initIndexArr = [1,3,1,4,5];
console.log(initIndexArr.indexOf(1))//0
console.log(initIndexArr.lastIndexOf(1))//2
console.log(initIndexArr.lastIndexOf(1,3))//2,意思表示从数组的第四项开始从后向前查找(而不是把数组的最后一项作为下标0)
console.log(initIndexArr.indexOf(9))//-1//因为根本就没有这一项就
/**
*数组去重(封装)
*.思想:新建一个空数组,如果新数组中没有待去重数组中的某一个元素,那么就push进去;
*/
function arrDuplliRemo (initArr){
var arrDupli = [];
for(var i = 0;i<initArr.length;i++){
if(arrDupli.indexOf(initArr[i])==-1){
arrDupli.push(initArr[i])
}
}
return arrDupli
}