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(''));

  

  

posted @ 2016-06-06 22:41  黑土白云  阅读(111)  评论(0编辑  收藏  举报