Javascript常见数组方法重构(一)

常见数组方法:本文先介绍影响原数组的方法,若有不正确的地方还请指正

目录

1.push

2.pop

3.unshift

4.shift 

5.splice

6.reverse

7.sort


1.push

函数功能:在数组的后面追加元素

函数实参:传入数据的新元素agruments

返回值:新数组的长度

//方法的调用
var res=arr.push('czh')
console.log(arr)
console.log("返回值",res)
//函数的内部实现原理 解构
Array.prototype.mypush=function(target){
    obj[obj.length]=target;
    obj.length++;
}
//底层原理
function arraypush(array){
        if(!array||array.constructor!==Array)throw new TypeError(array+"is not a Array");
        for(var i=0;i<arguments.length;i++){
             array[array.length]=arguments[i];
        } 
    return array.length;
}

2.pop

函数功能:删除数组最后一个元素

返回值:删除的元素

function arrayPop(array){
    if(!array||array.constructor!==Array)throw new TypeError(array+"is not a Array");
    if(arr.length<=0) return;
    var item=array[array.length-1];
    array.length--;
    return item;
}

3.unshift

函数功能:在数组的头部增加元素

返回值:新数组的长度

function arrayUnshift(array){
    if(!array||array.constructor!==Array)throw new TypeError(array+"is not a Array");
    for(var i=array.length+arguments.length-1){
        if(i>=arguments.length-1){
            array[i]=array[i-(arguments-1)];
        }else{
            array[i]=arguments[i+1];
        }
        return array.length;
}
}

4.shift

函数功能:删除数组的第一个元素

返回值:被删除的元素

function arrayShift(array){
    if(!array||array.constructor!==Array)throw new TypeError(array+"is not a Array");
    var item=array[0];
    for(var i=0;i<array.length;i++){
        array[i]=array[i+1];
    }
    array.length--;
    return item;
}

5.splice

函数功能:从索引index删除到结束

具有删除、插入、替换的作用 改变当前数组返回新数组

start 从哪儿开始 deleteCount 删除几个 ...item 替换的元素

返回值:被删除的元素形成的数组

function arraySplice(array,start,deleteCount,...item){
    if(!array||array.constructor!==Array)throw new TypeError(array+"is not a Array");   
    var deleteArr=[];
    if(start===undefined) return deleteArr;
    start=~~start
    if(start<0) start+array.length<0 ? 0:start+array.length;
    if(start>array.length) start=array.length;
    if(deleteCount===undefined) deleteCount=array.length-start;
    deleteCount=~~deleteCount;
    if(deleteCount<0) deleteCount=0;
    //删除
    for(var i=start;i<array.length;i++){
       if(i<start+deleteCount){
           deleteArr[deleteArr.length]=array[i];
       }
        array[i]=array[i+deleteCount];
    }
    array.length-=deleteCount>array.length-start ? array.length-start :deleteCount;
    //添加
    for(var j=array.length+item.length-1;j>=start;j--){
        if(j>=start+item.length){
            array[j]=array[j-item.length];
        }else{
            array[j]=item[j-start];
        }
    }
    
    return deleteArr; 
}

6.reverse

函数功能:反转函数 倒序改变原数组

返回值:反转后的数组

function arrayReverse(array){
    if(!array||array.constructor!==Array)throw new TypeError(array+"is not a Array");   
    for(var i= 0;i<~~(array.length/2),i++){
        var temp=array[i];
        array[i]=array[array.length-i-1];
        array[array.length-i-1]=temp;
    }
    return array;
}

7.sort

函数功能:按照字符的排序规则从小到大排序

返回值:排序后的数组

var arr=[2,5,1,7,18,1,2,9,5,3,12,11,2,13];
arr.sort(function(a,b){
    return a-b//正序
    //return b-a//倒叙
})
function arraySort(array,fn){
    for(var i=0;i<arr.length;i++){
    for(var j=0;i<arr.length-1-i;i++){
         if(fn(array[j],array[j+1])>0){
             var temp= arr[j+1];
             arr[j+1]=arr[j];
             arr[j]=temp;
         }
    }
  }
    return array; 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值