javaScript高级程序设计--数组

这里主要介绍一些数组的常用方法:

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
}












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值