2016-06-06 数组的几个重要方法
1.
var arr=[1,2,3] arr.push('abc');//返回的是数组的长度为 4 arr=[1,2,3,'abc'] 如果是 arr.unshift('abc');返回的也是数组长度为4,IE6 IE7 不支持返回的是undefined,arr=['abc',1,2,3] var arr=[1,2,3]; arr.pop();删除最后一个 arr=[1,2], arr.pop()返回的是删除的元素 arr.shift();删除第一个 arr=[2,3] 交换位置 var arr =['a','b','c','d']; 要求:a b c往后移动一位,d放在最前面 解决:先把d拿走 arr.pop();//返回的是d, 然后放置到第一位 arr.unshift(arr.pop()); 要求:b c d往前移动一位 a到最后 解决:先把a拿走 即:arr.shift(),在把a放到最后arr.push() arr.push(arr.shift());
<script>
//吊炸天的splice方法 删除 替换 添加功能 var arr =['a','b','c','d','e']; //删除 alert(arr.splice(0,2));//返回的是删除的东西,从第0位开始删除两位 即 a b alert(arr);// arr=[c,d,e //替换 alert(arr.splice(0,1,'fff'));//替换数组的第0位即a,只替换一位,所以 弹出a alert(arr);// fff,b,c,d,e alert((arr.splice(0,2,'fff','ggg')))//a b 从第零位开始,往后替换两位,如果不写ggg,则数组长度减少一位 alert(arr)// fff,ggg,c,d,e //添加 alert(arr.splice(1,0,'m','n','l')) ;//从数组下标为1的地方添加三个数,0代表添加 alert(arr)//a m n l b c d e //去重 var arr=[1,1,2,2,2,4,4,4,6,4,5,8,8]; alert(removeRepeat(arr));//1 2 4 6 5 8 //抽取去重方法 function removeRepeat(arr){ if(arr==null || arr==undefined) return; for(var i=0;i<arr.length;i++){ for(var j=i+1; j<arr.length;j++){ if(arr[i]==arr[j]){ arr.splice(j,1);//注意删除小标j,数组长度会减1, j--;//所以arr[j]的元素也要减少一个 } } } return arr; } //sort()排序 //1.默认的sort()排序是字符串比较,只比较第一位 var nums =[1,4,7,8,5,9]; alert(nums.sort());//1 4 5 7 8 9 var chars=['a','z','c','f','t']//a c f t z 因为 a-z 97-122 alert(chars.sort()); var nums2=[1,4,22,3,8,9,77,56,48];//-->var nums2=['1','4','22','3','8','9','77','56','48'] '77'第一位是7,小于8 和9 alert(nums2.sort());//1 22 3 4 48 56 77 8 9 为什么会这样??? 因为默认的sort()排序是字符串比较,只比较第一位 //如何改变这种状况,加入比较器 alert(nums2.sort(function(a,b){return a-b;}));//1 3 4 8 9 22 48 56 77 //如何排序字符串不完全是数字呢? var arr =['100px','20px','8px','10px','200px']; // alert(arr.sort())//默认是 100px 10px 200px 20px 8px //怎么办?去除ox再加入比较器 alert(arr.sort(function(a,b){return parseInt(a)-parseInt(b)}));//8px 10px 20px 100px 200px </script>
3.随机数
//随机数 //0-x Math.round(Math.random()*x); //1-x Math.ceil(Math.random()*x); //从x 到y 之间的随机数 如:100-450 Math.round(Math.random()*(y-x)+x);
4.翻转字符串
//数组转换成字符串用join() var str='abcdefg'; var arr=str.split(''); alert(arr.reverse().join(''));