码迷,mamicode.com
首页 > 编程语言 > 详细

原生JS数组方法(二)——reverve()、slice()、concat()、sort()

时间:2020-01-04 22:41:12      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:排序   tostring   函数   focus   his   object   二分法   数组   error   

reverve

数组的倒序方法

Array.prototype.reverse = function(){
    //用二分法
    for(var i=0;i<this.length/2;i++){
        //解构赋值
        [this[i],this[this.length-1-i]] = [this[this.length-1-i],this[i]]
    }
    return this
}

slice

数组截取,不改变原数组,并把截取的新数组返回出去

Array.prototype.Slice =function(n=0,m=this.length){
if(n<=0&&m<0&&this.length+n>this.length+m){
      return [];
  }
  n<0?n = this.length + n:n;
  m<0?m = this.length + m:m;
  m>this.length?m=this.length:m;
  let res =[];
  for(var i=n;i<m;i++){
      res[res.length]=this[i];
  }
  return res;
}

concat

数组拼接,支持单个参数和数组

Array.prototype.concat=function(){
    let res=[];
    for(var j=0;j<this.length;j++){
        res[res.length]=this[j]
    }
    for(var i=0;i<arguments.length;i++){
        if({}.toString.call(arguments[i]) === [object Array]){
            for(var z=0;z<arguments[i].length;z++){
                res[res.length]=arguments[i][z]
            }
        }else{
            res[res.length]=arguments[i]
        }

    }
    return res;
}

sort

主要利用冒泡,不传参按照数字第一位排序,传参,a-b升序b-a倒序

Array.prototype.sort=function(compare){
    //判断传入的是不是函数
      if(typeof compare !== "function"&& compare !== undefined){
        throw new Error( " The comparison function must be either a function or undefined" +
            "at Array.sort (native)" );
    }
     for (var i = 0; i < this.length-1; i++) {
        for (var j = 0; j < this.length-1-i; j++) {
            //传入回调函数走这里
            if(compare){
                //a-b和b-a都是大于0才换位置
                if(compare(this[j],this[j+1])>0){
                    [this[j],this[j+1]] = [this[j+1],this[j]]
                }
                //不传回调走这里,按首个数字排序
            }else{
                if((this[j]+"")[0] - (this[j+1]+"")[0] > 0 ){
                    [this[j],this[j+1]] = [this[j+1],this[j]]
                }
            }

        }
    }
}

原生JS数组方法(二)——reverve()、slice()、concat()、sort()

标签:排序   tostring   函数   focus   his   object   二分法   数组   error   

原文地址:https://www.cnblogs.com/bxbxb/p/12150467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!