js模拟实现Array的sort方法

JavaScript的Array对象有一个sort方法,用于实现对数组元素的排序,该方法默认按照数组项ASCII 字符顺序升序排列。  
如[6,7,9,1,-1].sort();执行后数组变为[-1,1,6,7,9]。

对于需要降序排列或非字符串排序,该方法就不能很好的执行了。

当然,sort有一个可选参数,它能帮我们解决这个问题,通过为sort传入一个函数,sort根据函数返回值进行排序。

数组为该函数默认传入数组中的两个元素,如传入a,b,如果函数返回值大于0,则排序方式为b,a,如果返回值小于0,则排序结果为a,b。

具体含义不好解释,当初我也对这个sort其到底是怎么排序的不理解。

如果知道了其实现过程,就对他的排序原理明了了。

sort的实现其实很像是一个简单的冒泡排序。

偶今日对其进行了模拟,看懂这个函数你一定就明白sort的原理了。

0){
t=this[i];
this[i]=this[j];
this[j]=t;
}
}
}
}
myarray.st();
alert("默认升序排列:"+myarray);

myarray.st(sortDesc);
alert("降序排列:"+myarray);

myarray.st(sortAsc);
alert("升序排列:"+myarray);

myarray1.sort(function(){return 1}); //注:js默认的sort对此排序结果跟这个不一样,其排序方式还暂不理解
alert("逆序排列:"+myarray1);

//-->

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • js模拟实现Array的sort方法

    JavaScript的Array对象有一个sort方法,用于实现对数组元素的排序,该方法默认按照数组项ASCII 字符顺序升序排列.   如[6,7,9,1,-1].sort();执行后数组变为[-1,1,6,7,9]. 对于需要降序排列或非字符串排序,该方法就不能很好的执行了. 当然,sort有一个可选参数,它能帮我们解决这个问题,通过为sort传入一个函数,sort根据函数返回值进行排序. 数组为该函数默认传入数组中的两个元素,如传入a,b,如果函数返回值大于0,则排序方式为b,a,如果返回

  • 深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法

    Array.prototype.sort方法是对数组进行排序, 该方法带一个函数参数,用来指定排序的规则. 我们先来看看sort 的简单应用: var arr=[2,1,3,4]; alert(arr.sort())  // [1,2,3,4] 从小到大排列 //现在由大到小排列  得到 [4,3,2,1] alert(arr.sort(function(left,right){return left>right?-1:1})) //这里,sort方法通过参数函数的返回值 1或者-1来决定是顺排

  • 基于js 各种排序方法和sort方法的区别(详解)

    今天突发奇想,想明白sort方法是否比各种排序都有优势,所以就参考别人的代码,做了一个测试,结果令人惊讶啊,上代码. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0,max

  • 如何用JS模拟实现数组的map方法

    昨天使用map方法的时候,突然感觉一直在直接用,也没有试试是怎么实现的,本来想直接搜一篇文章盘一下子,结果没搜到合适的,好吧,那就自己来写一下子吧 今天就来实现一个简单的map方法 首先我们来看一下map方法的使用以及具体的参数 var arr = ["a","b","c","d","e"]; arr.map(function(currentValue,index,arr){ console.log(&qu

  • JS模拟键盘打字效果的方法

    本文实例讲述了JS模拟键盘打字效果的方法.分享给大家供大家参考.具体如下: 这里使用JS模拟实现软键盘及打字效果,点击软键盘年的字母键,文本框中即可显示文字,像是键盘打字的效果,美工不太好,没怎么美化,CSS高手可美化一下按钮,看上去还挺不错吧,我觉得. 先来看看运行效果图: 具体代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb23

  • js中array的sort()方法使用介绍

    或许你一直在用javascript中的array的sort. 或许你一直相信它会给你正确的结果. 至少我曾经也是这样认为的,直到有一天,我看到了如下的代码 : 复制代码 代码如下: [5,10,1].sort(); 或许结果有点出人意料.结果如下: 复制代码 代码如下: [1,10,5] 仔细深究之后,发现原来默认的sort方法并不是按照整形数据来排序,而是用的字符串匹配方式. 换言之就是10 中的这个 1 导致了上面代码的错误. 当然,解决方法有很多,可以给sort方法中传入回调函数. 复制代

  • JS模拟的Map类实现方法

    本文实例讲述了JS模拟的Map类.分享给大家供大家参考,具体如下: 根据java中map的属性,实现key----value保存 1.使用数组方式存储数据,(使用闭包) function Map() { var struct = function (key, value) { this.key = key; this.value = value; } var put = function (key, value) { for (var i = 0; i < this.arr.length; i+

  • JS中的数组的sort方法使用示例

    复制代码 代码如下: var values=[0,1,5,10,15]; values.sort(); alert(values);// 输出0,1,10,15,5 这是因为sort会调用每一项的toString方法进行比较,"10"比"5"小,故在前面. 要实现对数值进行排序,则需要定义一个比较函数,并将该函数传入sort. 复制代码 代码如下: function compare(value1,value2){ if(value1<value2){ retu

  • js 自带的sort() 方法全面了解

    1. 方法概述 Array的sort()方法默认把所有元素先转换为String再根据Unicode排序, sort()会改变原数组,并返回改变(排序)后的数组 . 2. 例子 2.1 如果没有提供自定义的方法, 数组元素会被转换成字符串,并返回字符串在Unicode编码下的顺序比较结果 var fruit = ['cherries', 'apples', 'bananas']; fruit.sort(); // ['apples', 'bananas', 'cherries'] var scor

  • JS模拟简易滚动条效果代码(附demo源码)

    本文实例讲述了JS模拟简易滚动条效果的方法.分享给大家供大家参考,具体如下: 使用Js模拟滚动条.简易模式,类似手机上常见的滚动条. 效果如下: Js代码如下: var scrollMoveObj = null, scrollPageY = 0, scrollY = 0; var scrollDivList = new Array(); // obj需要添加滚动条的对象 w滚动条宽度 className滚动条样式名称 // obj元素 必须指定高度,并设置overflow:hidden; //

随机推荐