js中的数组类似与java中的容器 类型可以不同、长度可变
一、数组的声明
var arr1=new Array();//数组的声明一
var arr2=[1,2,3,true,new Date()];//数组的声明二
二、数组的操作
var arr3=arr2.pop();//移除数组的最后一个元素,返回移除的元素
var arr4=arr2.push(12,23);//向数组中添加元素,返回新数组的长度
var arr5=arr2.shift();//移除数组的头部一个元素,返回移除的元素
var arr6=arr2.unshift(false,"qq");//从头部向数组中添加元素,返回新数组的长度
var arr7=arr2.splice(1,2);//截取新数组(第一个参数起始位置,第二个参数截取个数,第三个参数:追加新元素的个数)
var arr8=arr2.slice(2,4);//截取范围 返回截取的内容 操作的不是数组本身
var arr9=[12,13,3,34];
var arr10=[14,15];
var result1=arr9.concat(arr10);//合并两个数组 返回一个新数组
var result2=arr9.join("-");//在元素之间加入内容 返回一个字符串
arr9.sort();//排序 正序 把元素当作字符串 操作数组本身
arr9.reverse();//排序倒序 按照数组的顺序 倒序 操作数组本身
正常的排序:
window.onload=function(){ var arr3=[10,3,7,9,34]; arr3.sort(); console.info(arr3);//[10, 3, 34, 7, 9] arr3.sort(compare);//使用 自定义的函数 compare console.info(arr3);//[3, 7, 9, 10, 34] } function compare(value1,value2){ if(value1<value2){ return -1; }else if(value1>value2) { return 1; }else{ return 0; } }
三、 ECMN5新特性
1、下标的方法
var aa=[1,2,3,4,5];
var index1=aa.indexOf(1); //0 返回元素在数组的位置
var index2=aa.indexOf(2,4);//3 从第几(2)个位置查某个(4)元素的位置
var index3=aa.lastIndexOf(2);//从数组尾部查找元素的位置
2、 迭代数组的方法
window.onload=function(){ var aa=[1,2,3,4,5]; //对于数组的每一个元素用一个函数运行,如果都返回true,结果返回true var verey=aa.every(function(item,index,array){ return item>0; }); console.info(verey);//true; //对于数组的每一个元素用一个函数运行,返回过滤后的结果 var filter=aa.filter(function(item,index,array){ return item > 2; }); console.info(filter);//[3,4,5] //循环数组的每一个元素(for循环) aa.forEach(function(item,index,array){ alert(item);//打印每个元素 }); //对于数组的每一个元素用一个函数运行可以经过函数执行后,把新的结果返回 var map=aa.map(function(item,index,array){ return item*2; }); console.info(map);//[2,4,6,8,10] //对于数组的每一个元素用一个函数运行,如果有一项返回true,结果返回true var some=aa.some(function(item,index,array){ return item>3; }); console.info(some);//true; //pre 前一个值 cur当前值 index索引位置 array数组(左边开始) var reduce=aa.reduce(function(prev,cur,index,array){ return prev+cur; }); console.info(reduce);//15 //pre 前一个值 cur当前值 index索引位置 array数组(右边开始) var reduceRight=aa.reduceRight(function(prev,cur,index,array){ return prev+cur; }); console.info(reduceRight);//15 }
四、常用方法————————Util
<!-- ———————移除指定元素 str是要删除的元素 ————————————--> Array.prototype.moveElement=function(str){ if(this.length===0){ throw new Error("数组空"); } for(var index=0,len=this.length;index<len;index++){ if(this[index]===str){ if(isNaN(index)||index>this.length){ return false; } for(var i=0,n=0;i<this.length;i++){ if(this[i]!=this[index]){ this[n++]=this[i] } } this.length-=1; return; } } }
window.onload=function(){ //去除数组中的重复项 var arr=[1,3,2,2,4,5,6,6,7,8,9]; alert(uniq(arr)); } //把数组转为对象 var arrToObj=function(arr){ var obj={}; for(var i=0;i<arr.length;i++){ obj[arr[i]]=i; } return obj; } //把对象转为数组 var objToArr=function(obj){ var arr=[]; for(var attr in obj){ if(obj.hasOwnProperty(attr)){ arr.push(attr); } } return arr; } //去掉数组中的重复项 function uniq(arr){ return objToArr(arrToObj(arr)); }