JS内置对象(Array数组对象)

Array对象
1.创建语法(2种):
1.1语法1: var arr=new Array(参数);

  • 括号内没有参数:表示创建了一个初始容量为0的数组,则返回数组为空,length为0;
  •         new Array()
  • 括号内为一个number类型的参数:表示创建了一个初始容量为number的数组(number出现小数或负数时会报错),length为number数值,返回元素为undefined;
  •         new Array(size)
  • 括号内为其他数量及类型的参数:表示创建一个包含参数为初始数据的数组;
  •         new Array(element0,element1,....elementn)
		var arr1=new Array();
		var arr2=new Array(3);
		var arr3=new Array("gsl","hello",6,true);
		console.debug("arr1:"+arr1);
		console.debug("arr1.length:"+arr1.length)
		console.debug("arr2:"+arr2[0]+" "+arr2[1]+" "+arr2[2]);
		console.debug("arr2.length:"+arr2.length);
		console.debug("arr3:"+arr3);
		console.debug("arr3.length:"+arr3.length);

后台结果显示:


1.2语法2: var arr=[初始数据列表];
  • 容量看具体列表初始数据个数
  • 可存放不同数据类型
		var arr=[3,6,"lyf",true,"gsl",false,8];
		console.debug(arr);

后台显示结果:



2.属性length
  • 设置或返回数组中元素的数目;
  • 不代表实际存储数据的数量,也不代表容量限制,可以给length赋值来改变数组容量

3.键值对:
  •     数组不仅可以使用非负整数作为索引下标,也可以使用字符串作为下标,称之为“key"(键)
  •     key不会对length属性产生影响,所以不适合使用for循环变量,应使用for...in循环;且for...in会自动跳过undefined的数据

		var arr=new Array(3);
		arr[0]="Amy";
		arr[2]="Tom";
		arr["name"]="gsl";
		console.debug(arr);
		console.debug(arr.length);
		console.debug("=============")
		for(var i=0;i<arr.length;i++)
		{
			console.debug(arr[i]);
		}
		console.debug("=============")
		for(var index in arr)
		{
			console.debug(arr[index]);
		}

后台运行结果:


4. 排序方法:sort()
  • 默认按照字符顺序排列,非String类型会自动转换为String
  • 可以使用回调函数作为参数来指定排序规则,用于排序规则的函数定义要求:
  •         接受2个形参,如果大于0表示参数1大于参数2(此时sort方法会交换2个数),小于0表示参数2大于参数1,等于0则表示2个参数相等;
       
	<script type="text/javascript">
		var arr=["tony","Tommy","tom"];
		console.debug("before sort:"+arr);
		arr.sort();
		console.debug("after sort:"+arr);
		console.debug("---------");
		var arr2=[10,3,"tt",45,7];
		console.debug("before sort:"+arr2);
		arr2.sort();//按照数值转换后的字符串排序
		console.debug("after sort:"+arr2);

		// 指定排序规则:一般约定俗成使用升序
		arr2.sort(comp);
		console.debug("after sort(comp):"+arr2);
		// 用于排序规则的函数定义要求:接受2个形参,表示要比较的2个数
		// 返回一个number:
		// 如果大于0表示参数1大于参数2,
		// 如果小于0表示参数2大于参数1,
		// 如果等于0,表示2个参数相等
		function comp(a,b){
			return a-b;
		}
		//如果return改写成b-a,则表示降序
	</script>

后台运行:


4.反转方法:reverse()
    将数据倒序排列,指位置,非字符大小
	<script type="text/javascript">
		var arr=new Array("tom","jerry","lucy","andy");
		var arr1=[1,45,7,23,89,42,12];
		arr.reverse();
		console.debug("reverse:"+arr);
		arr1.reverse();
		console.debug("reverse:"+arr1);
	</script>

后台结果:


5.栈操作
5.1 栈结构特点:先进后出(FILO)
5.2  push(newelement1,newelement2,...,newelementx);
          
  • newelement1必选,其余可选
  •            
  • 将数据添加到数组尾部,返回加入新数据后的数组的长度
  • 5.3  pop();
            从数组尾部取一个数据,数组长度减1,返回数组最后一个数据(即被删除的数据)
    5.4 举例:
       
    <script type="text/javascript">
    		var arr=new Array("tom","jerry","lucy","andy");
    		console.debug(arr.push("tonny","joe"));
    		console.debug(arr);
    		console.debug(arr.pop());
    		console.debug(arr);
    	</script>

        后台运行结果:
       
    6.拼接操作
    6.1 join(separator)
       
  • separator表示分隔符,可选,参数省略则默认用逗号作为分隔符
  •    
  • join()方法把数组中的所有元素放入一个字符串
  • 6.2 concat(array1,array2...arrayx)
       
    • array1...arrayx 可以是具体的值,也可以是数组对象,不过添加的是数组中的元素而非数组
    •    
    • 返回拼接而成的新的数组

    6.3 举例
    	<script type="text/javascript">
    		var arr1=new Array("tom","jerry","lucy","andy");
    		var arr2=new Array("tonny","joe");
    		
    		var arrjoin1=arr1.join("-");
    		console.debug(arrjoin1);
    		var arrjoin2=arr1.join("");
    		console.debug(arrjoin2);
    
    		var arrconcat=arr1.concat(1,5,7,arr2,"ethan","peter")
    		console.debug(arrconcat);
    		
    	</script>

       后台显示结果:   

    7.其他方法
    7.1 splice(index,howmany,item1,...,itemx)
       
  • index 支持负数,从数组结尾处开始规定位置,必选
  •    
  • howmany 表示要删除数据的个数,为0则不删除,必选
  •    
  • item 为可选,表示要增加的数据
  •    
  • 返回被删除的项目
  •    
  • 举例:
  • 	<script type="text/javascript">
    		var arr1=new Array("tom","jerry","lucy","andy","ethan");
    
    		var newarr1=arr1.splice(2,0);
    		console.debug(arr1);
    		console.debug(newarr1);
    
    		var newarr2=arr1.splice(2,1);
    		console.debug(arr1);
    		console.debug(newarr2);
    
    		var newarr3=arr1.splice(2,1,"item1","item2","item3");
    		console.debug(arr1);
    		console.debug(newarr3);
    	</script>

        后台结果:

    7.2 slice(start,end)
       
  • 从已有数组中返回选定的元素,从start开始,到end下标的前一个元素
  •    
  • start 表示起始位置,可倒数,必选
  •    
  • end 表示结束位置,可倒数,可选,若没有指定结束位置,则默认到最后
  •    
  • 举例
  •    
    	<script type="text/javascript">
    		var arr1=new Array("tom","jerry","lucy","andy","ethan");
    		var arr2=new Array("tonny","joe","peter","ben");
    
    		var newarr1=arr1.slice(1,3);
    		console.debug(arr1);
    		console.debug(newarr1);
    
    		var newarr2=arr2.slice(1,-1);
    		console.debug(arr2);
    		console.debug(newarr2);
    		
    	</script>

        后台结果:

    7.3 shift()/unshift() 
  • shift()删除并返回数组的第一个元素
  • unshift()向数组的开头(与push不同,push是在尾部)添加一个或更多元素,并返回新的长度
  • 举例:
  • 	<script type="text/javascript">
    		var arr1=new Array("tom","jerry","lucy","andy","ethan");
    
    		var newarr= arr1.shift();
    		console.debug(arr1);
    		console.debug(newarr);
    
    		var newlength=arr1.unshift("peter","amy");
    		console.debug(arr1);
    		console.debug(newlength);
    	</script>

        后台结果:
       

    猜你喜欢

    转载自15951837734.iteye.com/blog/2305631