JavaScript初阶(十)---------- 数组

数组

  数组的定义

    1.数组字面量(直接量)

var arr = [1, 2, 3];

    2.利用构造函数

new Array(length/content)

 

           

var arr = new Array(1,2,3,4);
arr = [1,2,3,4]

        

     如果只传一位参数就代表数组的长度。注意:数组只能溢出写不能溢出读。

 

 


数组方法(重点)

能改变原数组的7种方法

 1.  arr.push( )  

     从数组最后添加元素。

var arr = [1,2,3,4];
arr.push(123,[],{})

  

    仿写一个push方法

    

Array.prototype.push = function(target){
    var len = this.length;
    (this[len] = target; //一个参数)
    for(var i = 0; i < arguments.length; i++){
        this[this.length] = arguments[i];//多个参数
	
}

 

  

 

2.   arr.pop( )        不用传参数

    剪切数组最后那个元素并返回。

 

3.   arr.shift( )       不用传参数

    在前面剪切元素并返回。

 

4. arr.unshift( )   

    在数组前面添加元素。可以一个,也可以多个,例如

          var arr = [1,2,3,4];
          arr.unshift(0);//******arr = [0,1,2,3,4]

  

          var arr = [1,2,3,4];
          arr.unshift(-2,-1,0);//************arr=[-2,-1,0,1,2,3,4]

 

5.   arr.reverse( ) 

   将数组元素逆转。

 

6.  arr.splice( )

  可传入多个参数,返回的是剪切的数组,第一个参数是开始操作位,第二个是剪切长度,之后的参数都是从操作位添加元素。

var arr = [1,2,3,4];
arr.splice(0,2);  //返回的是剪切的数组 [1,2],这时候arr=[3,4]

  

         当剪切长度是0的时候,可以用来添加元素  这种方法常用来插入数据

var arr = [1,2,3,4];
arr.splice(0,0,5,6,7); //返回的是 []        ,这时候arr= [5,6,7,1,2,3,4]

  

     

7.  arr.sort( )   用来排序

      arr.sort( )自己的方法是通过ASCII进行排序。一般我们都是自定义方法,自定义规则。关注返回值,如果返回的是正数,那么后面的数在前面,如果返回的是负数,那么前面的数

在前。操作数,会将数组中的任意的两位数传到函数里面,当做a,和b,然后根据返回值,按照上述方法进行排序。例如:

 

	var arr = [2,9,6,1,7,8,3];
	arr.sort(function (a,b) {
		if(a > b){ 
			return 1;
		}else{
			return -1;
		}
	}
	//arr [1,2,3,6,7,8,9] 正序
	arr.sort(function (a,b){
	    if(a < b){
		        return 1;
		}else{
			return -1;
		}
	}
	//arr [9,8,7,6,3,2,1]; 倒序

  

      简写如下:

var arr = [1,6,2,7,8]
arr.sort(function (a,b) {
	return a-b;//正序
	return b-a;//倒序
})            

 

  

    将正序的数组随机排列:

var arr = [1,2,3,4,5,6,7,8];
arr.sort(function () {
	var ret = Math.random() - 0.5;
	return ret;
})

  

    将对象按照某个属性排列:

var arr = [{name:'大明',age:20},{name:'小明',age:18}]
arr.sort(function (a,b){
	return a.age - b.age;
}

  

 

以上7种方法都能改变原数组  push()    pop()     shift()   unshift()  reverse()  splice()  sort()

 

 

不能改变原数组的2种方法

1.  arr.concat( )

    对两个数组进行连接

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

  

2. arr.join( )

    将数组按照传进去的符号进行连接,最后转化为字符串返回。默认是逗号连接。

    

var arr = [1,2,3];
arr.join("-") // "1-2-3"

  

3.  arr.toString( )

    将数组的每一位转化为字符串并返回

var arr1= [[],1,2,3];
arr1.toString();
var arr2 = [{},1,2,3];
arr2.toString();

    结果如下:

    

 

4.  str.split( )   这是字符串的方法,操作的是字符串,刚好与join相反

      将字符串按照传进去的符号拆分为字符串形式的数组

var arr = [1,2,3];
var str1 = arr.join("-") // "1-2-3"
str.split('-');   //["1","2","3"]

           从上面我们可以知道,这个方法可以将数组里面的元素变成字符串的形式。

 

 

接下来看到例题巩固一下:  用最快的方法将以下字符串拼接为字符串:“上海”,“北京”,“中山”,“深圳”,“广州”,“梅州”

      

            方法一: 栈操作(耗性能)

            

var str = "";
str += "上海"+“北京”+“中山”+“深圳”+“广州”+“梅州”;//"上海北京中山深圳广州梅州"

                            

    方法二: 堆操作(利用数组)

var arr = ["上海","北京","中山","深圳","广州","梅州"];
                    arr.join('');      //"上海北京中山深圳广州梅州"

  

 

posted @ 2018-01-22 09:18  暮雨橙风  阅读(126)  评论(0编辑  收藏  举报