JavaScript的排序问题

根据javascript的手册,将sort()方法进行运算,结果

<script>
    var arr = [2,3,56,12,546,77,98];
    alert(arr.sort());
</script>

l根据javascript的手册,将sort()方法进行运算,结果如下:

可以看到这并不是我们需要的排序,于是根据手册的提示:

如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:

  • 负值,如果所传递的第一个参数比第二个参数小。
  • 零,如果两个参数相等。
  • 正值,如果第一个参数比第二个参数大。

于是我封装一个函数demosort()

<script>
    var arr = [2,3,56,12,546,77,98];
    arr.sort(function demosort(x, y){
        if (x< y) {
            return -1;              //小于,返回-1     
        } else if (x > y) {
            return 1;                    //大于返回1
        } else {                    //其他,返回 0
            return 0;
        }
    });
    alert(arr);
</script>

这样的话,再次通过sort()函数即可实现正确的排序。

结果如下:

这样就实现了真正意义上的排序。至于逆序可以将返回值相反,或者直接使用 reverse()函数。

时间: 2024-10-10 07:51:36

JavaScript的排序问题的相关文章

Javascript排序问题

1)一个简单的排序:对于一般的数组可以直接使用sort,默认是升序: var values = [1, 3, 2, 4, 5]; values.sort(); 2)sort本身可以接受一个参数,是一个函数对象的引用,来实现自定义的排序: function compare(value1, value2) { if(value1 < value2) { return -1; } if(value1 > value2) { return 1; } else { return 0; } } var v

《前端之路》之 Babel 下一代 JavaScript 语法编译器

写本章的内容的出发点主要是 为了对于之前关于 JS 版本的一个总结,在之前的开发中,我们始终对于 ECMAScript 的版本的更新不够重视,以至于在后面的 开发过程中,我们始终会被各种新奇的语法打断了我们的思考思路,所以对于基础的追求,是任何时候都不能忘记的.不然会的框架再多,会玩儿的花样再多,到头来都只是API . 另外 一个目的就是想做一个好玩的东西,就是 实时编译所写的高版本(ES2015+)的 JS 代码.转化成现在大部分浏览器可以兼容的 ES5 . ES3 等. 下面就正式介绍下 B

十大经典排序算法(Javascript版)

1 冒泡排序 时间复杂度 O(n²) .额外空间复杂度O(1). 1)算法步骤 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数. 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 2)动图演示 3)什么时候最快 当输入的数据已经是正序时,时间复杂度 O(n) . 4)什么时候最慢 当输入的数据是反序时,时间复杂度 O(n²) 

Javascript中call的使用

call 方法应用于:Function 对象调用一个对象的一个方法,以另一个对象替换当前对象.call([thisObj[,arg1[, arg2[,   [,.argN]]]]])参数:thisObj 可选项.将被用作当前对象的对象. arg1, arg2, , argN 可选项.将被传递方法参数序列. 说明:call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.如果没有提供 thisObj 参数,那么 G

你不知道的javascript 之 &gt;&gt;

?远大于符号 在数学公式中,">>"代表远大于符号,表示一个数远大于另一个数,如76>>3,-2>>-99等.庞加莱与波莱尔1901年首先使用了它,很快被数学界所接受,沿用至今. 折叠编辑本段右移运算符 在许多计算机编程语言(例如:C语言.C++语言.Java语言.JavaScript语言.Pascal语言等)中,">>"代表右移运算符,就相当于"shr".该运算符为双目运算符,结合方向为从左到右,

初识JavaScript

JavaScript简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能.因为JavaScript兼容于ECMA标准,因此也称为ECMAScript. ECMAScript,描述了该语javascript组成言的语法和基本对象. 文档对象模型(DOM),描述处理网页内容的方法

最全解析如何正确学习JavaScript指南,必看!

划重点 鉴于时不时,有同学私信问我:怎么学前端的问题.这里统一回复一下,如下次再遇到问我此问题同学,就直接把本文链接地址发给你了. "前端怎么学"应该因人而异,别人的方法未必适合自己.就说说我的学习方法吧:我把大部分时间放在学习js上了.因为这个js的学习曲线,先平后陡.项目实践和练习啥的,我不说了,主要说下工作之外的时间利用问题.我是怎么学的呢,看书,分析源码.个人这几天统计了一下,前端书籍目前看了50多本吧,大部分都是js的.市面上的书基本,差不多都看过. 第一个问题:看书有啥好处

JavaScript数据类型检测

一.JavaScript 数据类型 1.基本数据类型(6种) Undefined Null Boolean Number String Symbol (ES6新增) 2.引用数据类型: Object 二.数据类型检测 1. typeof 可以检测除null 外的基本类型.null 和所有对象的typeof都是"object", 不能用于检测用户自定义类型. 比如Date, RegExp, Array, DOM Element的类型都是"object". var s

JavaScript的进阶之路(二)函数简介,变量、作用域和内存问题

<h3>ECMAScript中函数不存在函数签名的概念,没有重载</h3><h3>无需指定返回值,可以在任何时候返回任何值.未指定返回值的函数,返回的是一个特殊的undefined值</h3> <script type="text/javascript"> function sayHi(){ console.log("Hi"); }; sayHi(); function sayName(name,age){