最近在调试JSP页面的时候经常和ajax打交道。在复杂场景下,ajax传参需要处理大量的参数。这时我才发现,精通Array的处理真的让开发变得轻松很多!!ArrayArray的创建非常灵活,可以使用Array的构造函数,也可以直接“字面量”地创建一个数组。vararr=newArray();//[]varbrr=Array();//[]两者等价vararr=Array(3);//[]arr.length;//3个空数组,长度为3vararr=Array(22,33,'qq',{});//[22,33,"qq",Object]varbrr=[22,33,'qq',{}];//数组是JavaScript内置的对象,是的,虽然是数组,但也是对象!!使用typeof判断会返回Object!而Array.isArray方法可以更准确的判断其类型。vara=[];typeofa;//objectArray.isArray(a);//truecommonmethodpush()方法push方法可以向数组末尾添加一个或多个元素,并返回改变后的数组长度!注意:①返回的是数组的长度,不是数组!②这个方法会改变原来的数组!!vararr=Array(22,33,'qq',{});arr.push('weibo');//5arr//[22,33,"qq",{}"weibo"]当我们要合并两个数组时,需要使用vara=[22,33];varb=[44,55];Array.prototype。push.apply(a,b)//或a.push.apply(a,b)//或a.push(44,55);//数组a=[22,33,44,55];注意不能这样写!!a.push(b);a;//[22,33,[44,55]]a.length;//3!!console.log(a);//[22,33,Array[2]]直接写成a.push(b),b会被认为是一个元素添加到a中,得不到想要的效果!如果现在需要合并两个对象数组,则如下:vara=[{name:'Stark',value:'Ironman'},{name:'Cap',value:'Oldman'}];varb=[{name:'Jerry',email:'Jerry@qq.com'},{name:'Lory',email:'Lory@163.com'},{name:'susan',email:'susan@gmail.com'}];//错误的写法a.push(b);//3console.log(a);//[Object,Object,Array[3]]//正确的写法a.push.apply(a.b);//5console.log(a);//[Object,Object,Object,Object,Object]pop()方法与push相反,删除数组的最后一个元素,并返回删除的元素:vara=['qq','微博','微信'];a.pop();//'weixin'a;//['qq','weibo']join()方法根据对应的参数分隔数组,以以字符串形式返回,如果没有参数,用','分隔这个方法不会改变原来的数组:vara=[1,2,3,4];a.join('')//'1234'a.join('|')//"1|2|3|4"varb=a.join()//"1,2,3,4"控制台.log(a);//[1,2,3,4]console.log(b);//"1,2,3,4"concat()方法可以组合多个数组,返回一个新的数组,但原始数组保持不变:vara=[22,33];varb=[44,55];varc=a.concat(b);console.log(a);//[22,33]console.log(b);//[44,55]console.log(c);//[22,33,44,55]vara=[{name:'tom',email:'tom@example.com'},{name:'peter',email:'peter@163.com'}];varb=[{name:'Jerry',email:'Jerry@qq.com'},{name:'Lory',email:'Lory@dfl.com'},{name:'susan',value:'susan@gmail.com'}];varc=a.concat(b);c;//[{name:'tom',email:'tom@example.com'},//{name:'peter',email:'peter@163.com'},//{name:'Jerry',email:'Jerry@qq.com'},//{name:'Lory',email:'Lory@dfl.com'},//{name:'susan',value:'susan@gmail.com'}]map()方法map方法会对数组的每个成员依次调用一个函数,并返回一个函数处理后的新数组,但不会改变原来的数组!varnumbers=[1,2,3];varnum=numbers.map(function(n){//[2,4,6]returnn*2;});numbers;//[1,2,3]函数map方法调用时,参数为1时,该参数表示当前数组成员;参数为三时为当前成员elem,索引index,原数组本身arrvarbrr=[1,2,3].map(function(elem,index,arr){returnelem*index;});brr;//[0,2,6]map方法也可以接受第二个参数,表示回调当this指向对象时执行函数vararr=['a','b','c'];varbrr=[0,2].map(function(e){returnthis[e];},arr)brr;//['a','c']在应用中,有时在使用ajax技术时,需要动态使用参数数组来转换一个url请求,map方法会很方便,例如:varb=[{name:'Jerry',email:'Jerry@qq.com'},{name:'Lory',email:'Lory@dfl.com'},{name:'susan',value:'susan@gmail.com'}];varurl=b.map(function(n){returnn.name+"="+n.email}).join("&");console.log(url);//JerryJerry=Jerry@qq.com&LoryLory=Lory@dfl.com&susansusan=susan@gmail.com然后在url前面加上ip地址、action和method就完成了ajax需要的动态url的拼接,例如:varendURL="localhost:8080/XXXX/"+eventAction+"!"+operation+"?"+url;
