JS数组常见的方法

本文深入讲解JavaScript中数组的各种操作方法,包括push、pop、unshift、reverse、splice、sort、concat、slice、join和split等,同时介绍了如何实现数组去重及类数组的使用技巧。
摘要由CSDN通过智能技术生成

//改变原数组
            var arr = [];
            arr.push(10,123,456);//在数组的最后以为添加数据,返回数组的长度
            Array.prototype.push = function(){
                for(var i = 0; i < arguments.length; i++){
                    this[this.length] = arguments[i];
                }
                return this.length;
            }
            arr.pop();//剪切数组的最后以为并返回,传参不影响
            arr.unshift(-1,0);//在数组的开始添加数据,并返回数组的长度 
            arr.reverse();//将数组反转,改变原数组
            var arr1  = [1,1,2,2,3,3];
//            arr.splice(从第几位开始,截取多少的长度,在切口处添加新的数据);   返回截取的数组
            arr1.splice(1,2);//返回[1,2],arr1 = [1,2,3,3];
            arr1.splice(0,3);
            arr1.splice(1,1,0,0,0);//arr1 = [1,0,0,0,2,2,3,3]
            var arr2 = [1,2,3,5];//将4插入3和5之间
            arr2.splice(3,0,4);
            
            
            
            //sort
            var arr3 = [9,1,20,3,50,-9,-1];
            //arr3.sort();//按照阿斯克码排序
            
            //必须写俩形参
            //看返回值       (1)当返回值为负数时,前面的数放在前面
                    //(2)当返回值为整数时,后面的数放在前面
                    //(3)返回值为0时,顺序不变(冒泡排序)
                arr3.sort(function(a,b){
                return a - b;//升序
//                return b - a;//降序
             })
            
//            给一个有序数组乱序
            var arr4 = [1,2,3,4,5,6,7,8,9,10];
            arr4.sort(function(){
                return Math.random() - 0.5;
            });
            
            
            //对象排序
            var o1 = {
                name : "a",
                age : 44
            }
            var o2 = {
                name : "b",
                age : 22
            }
            var o3 = {
                name : "c",
                age : 34
            }
            var arr5 = [o1,o2,o3];
            arr5.sort(function(a,b){
                return a.age - b.age;
            })


            //不改变原数组
            var Arr1 = [1,2,3];
            var Arr2 = [4,5];
            var Arr = Arr1.concat(Arr2);//Arr1和Arr2并未改变
            var newArr1 = Arr.slice();//slice(从该位开始,截取到该位)并返回截取的数组,原数组不改变,如果直传一个参数,那么便从该位开始截取,截取到末位,不写参数,整个截取
            var str = Arr.join("-");//参数最好以字符串的形式,返回连接后的字符串
            var newArr2 = str.split("-");
            


            //类数组(具备数组和对象的属性)
            //属性要为(数字)属性
            //必须有length,最好有push方法

例题:
            var obj = {
                "2" : "a",
                "3" : "b",
                "length" : 2,
                "push" : Array.prototype.push,
                "splice" : Array.prototype.splice
            }
            obj.push("c");
            obj.push("d");

         console.log(obj);

    解析:
//            obj = {
//                "2" : "c",
//                "3" : "d",
//                "length" : 4 
//            }

obj是类数组,其push方法如下

//            Array.prototype.push = function(target){
//                this.[this.length] = target;
//                this.length++;
//            }

现在length == 2;故arr.push("c")即

 obj = {
 "2" : "c",
  "3" : "b",
  "length" : 3, 
   }此时legnth++,length == 3;

同理arr.push("d"),即

            obj = {
                "2" : "c",
                "3" : "d",
                "length" : 4 
           }此时length == 4

 

 

    //数组去重
            var unarr = [1,"a",1,2,3,2,3,"a","a"];
            Array.prototype.unique = function(){
                var obj = {},
                    myArr = [],
                    len = this.length;
                for(var i = 0;i < len; i++){
                    if(!obj[this[i]]){
                        obj[this[i]] = "1";
                        myArr.push(this[i]);
                    }
                }
                return myArr;
            }

unarr.unique();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值