js中array的sort()方法使用介绍_javascript技巧

或许你一直在用javascript中的array的sort.

或许你一直相信它会给你正确的结果。

至少我曾经也是这样认为的,直到有一天,我看到了如下的代码 :

复制代码 代码如下:

[5,10,1].sort();

或许结果有点出人意料。结果如下:

复制代码 代码如下:

[1,10,5]

仔细深究之后,发现原来默认的sort方法并不是按照整形数据来排序,而是用的字符串匹配方式。

换言之就是10 中的这个 1 导致了上面代码的错误。

当然,解决方法有很多,可以给sort方法中传入回调函数。

复制代码 代码如下:

[5,10,1].sort(function(x,y){
if(x>y) {return 1;
}else{
return -1
}
}
);

这样就能得到你预期的结果了。

偶然发现,以记录之,防止忘记。

时间: 2024-12-28 13:16:01

js中array的sort()方法使用介绍_javascript技巧的相关文章

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

 默认的sort方法并不是按照整形数据来排序,而是用的字符串匹配方式,下面有个不错的示例,大家可以参考下 或许你一直在用javascript中的array的sort.    或许你一直相信它会给你正确的结果.    至少我曾经也是这样认为的,直到有一天,我看到了如下的代码 :  代码如下: [5,10,1].sort();    或许结果有点出人意料.结果如下:   代码如下: [1,10,5]    仔细深究之后,发现原来默认的sort方法并不是按照整形数据来排序,而是用的字符串匹配方式. 

js 自带的sort() 方法全面了解_javascript技巧

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

JS中事件冒泡和事件捕获介绍_javascript技巧

谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免.事件捕获阶段:事件从最上一级标签开始往下查找,直到捕获到事件目标(target).事件冒泡阶段:事件从事件目标(target)开始,往上冒泡直到页面的最上一级标签. 1.冒泡事件: 事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发.通俗来讲就是,就是当设定了多个div的嵌套时:即建立了父子关系,当父div与子div共同加入了onclick事件时,

js中unicode转码方法详解_javascript技巧

有时候遇到unicode不得不转码,我们只好人工编码进行转码.昨天在网上看到一个unitcode转码的方法,非常好用!小编把它和大家分享一下.JavaScript脚本UniCode转码函数: <script type="text/javascript"> var GB2312UnicodeConverter = { ToUnicode: function (str) { return escape(str).toLocaleLowerCase().replace(/%u/g

js中的异常处理try...catch使用介绍_javascript技巧

在JavaScript可以使用try...catch来进行异常处理.例如: 复制代码 代码如下: try { foo.bar();} catch (e) { alert(e.name + ": " + e.message);} 目前我们可能得到的系统异常主要包含以下6种: EvalError: raised when an error occurs executing code in eval() RangeError: raised when a numeric variable o

JS中实现replaceAll的方法(实例代码)_javascript技巧

第一次发现JavaScript中replace() 方法如果直接用str.replace("-","!") 只会替换第一个匹配的字符. 而str.replace(/\-/g,"!")则可以全部替换掉匹配的字符(g为全局标志). replace() The replace() method returns the string that results when you replace text matching its first argumen

javascript中数组的concat()方法使用介绍_javascript技巧

复制代码 代码如下: <html> <head> <title>数组的concat()方法</title> <script> /* 数组的concat()方法: 1.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 2.返回一个新的数组.该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的. 如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组. */ var arr1 = [

javascript中encodeURI和decodeURI方法使用介绍_javascript技巧

一.基本概念 encodeURI和decodeURI是成对来使用的,因为浏览器的地址栏有中文字符的话,可以会出现不可预期的错误,所以可以encodeURI把非英文字符转化为英文编码,decodeURI可以用来把字符还原回来.encodeURI方法不会对下列字符进行编码:":"."/".";" 和 "?",encodeURIComponent方法可以对这些字符进行编码. decodeURI()方法相当于java.net.URLD

javascript中的document.open()方法使用介绍_javascript技巧

document.open()方法打开一个新的文档,并用document.write()方法编写文档的内容,然后用document.close()方法关闭文档操作,使其内容显示出来. 例如: 复制代码 代码如下: <script type="text/javascript"> window.onload=hello; function hello(){ var msg = "JavaScript真好玩!"; document.open(); docume