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

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]]
                }
            }

        }
    }
}

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

时间: 2024-07-30 02:42:40

原生JS数组方法(二)——reverve()、slice()、concat()、sort()的相关文章

原生JS数组方法实现(一)————push()、unshift()、pop()和shift()

push 向数组末尾添加一个或多个元素,并返回数组新的长度 function push(){ for(let i=0;i<arguments.length;i++){ this[this.length] = arguments[i]; } return this.length } Array.prototype.push = push; unshift 向数组开头添加一个或多个元素,并且返回数组新的长度 function unshift(){ //创建一个新数组接收添加的元素 let newAr

原生js 数组的迭代的方法

一.原生js Array给我们提供很多了方法.方便我们操作数组.这些方法的参数,都需要传入一个匿名函数,匿名函数中有三个参数,分别含义是:数组中的项.该项的索引.以及数组本身. 1.filter方法:对数组每一项执行匿名函数,并返回符合条件的数组的项. 1 var testArr=[1,2,3,4,52,2]; 2 //filter 方法 3 var moreTwo=testArr.filter(function(item,index,array){ 4 return item >2; 5 })

原生JS数组去重的几种方法

有时候我们做项目的时候往往会需要把数组里面一些重复的项去掉,但是原生JS有排序,有筛选等等,但是就是没有数组去重怎么办呢?这能怎么办,自己手动实现嘛.(以下代码直接在原型上添加的的方法,为的就是和原生JS方法类似)可以达到Array.xxx()这样的效果 第一种方法:创建空数组利用indexOf方法检测就数组的项是否在新数组中. Array.prototype.unique=function(){ var arr=[];//创建新数组 for(var i=0;i<this.length;i++)

php数组以及js数组方法整理

在js中数组非常经常用到,熟练掌握数组的方法能够大大的提高对自己的变成效率,最近解除php,学得非常皮毛,遇到一个问题,自己一直陷入foreach循环如何解决的死循环中.结果一直没能很好的解决,回来讨教了一下同学,更加觉得数组的一些方法很好用,所以有必要整理一下数组的一些方法,希望自己能牢记它们. 一,js数组的操作方法: 参照w3c内容:http://www.jb51.net/w3school/js/jsref_obj_array.htm 以及<javascript权威指南>和<jQu

几个关于js数组方法reduce的经典片段

以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要单挑reduce方法,一个原因是我对这个方法掌握不够,不能够用到随心所欲.另一个方面,我也感觉到了这个方法的庞大魅力,在许多的场景中发挥着神奇的作用. 理解reduce函数 reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. a

js 数组方法总结

Array数组: length属性 可通过array.length增加或者减少数组的长度,如;array.length=4(数组长3,第四位为undefined),也可单纯获得长度.array[array.length]=''赋值. 检测数组 检测是否数组ES3  instanceof array  ES5新增的Array.isArray(),支持的IE9+,Opera 10.5+,Chrome,Safari5+. 一:原数组不变  [,start],表示0或1个参数 concat() 无参,返

JS数组方法汇总 array数组元素的添加和删除

js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[1] = "bbb"; arr[2] = "ccc"; //alert(arr.length);//3 arr.pop(); //alert(arr.length);//2 //alert(arr[arr.length-1]);//bbb arr.pop(); //al

JS数组方法汇总 array数组元素的添加和删除 - yuzhongwusan - 博客园

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

JS数组方法总结

数组的常用方法总结 不改变原数组 1.Array.length;                       //获取数组长度 2.Array.join();                         //将数组以传入的字符串进行拼接,返回拼接后的字符串,默认以“,”来拼接. 3.Array.concat();                    //可以向数组末尾添加传入的多个元素,或者是数组 4.Array.slice()                        //用于复制下