有这么一个数组:
boxes = [ { id: 1, name: 'box034' },
{ id: 2, name: 'box001' },
{ id: 3, name: 'box036' },
{ id: 4, name: 'box024' },
{ id: 5, name: 'box028' },
{ id: 6, name: 'box019' } ]
用
boxes.sort(function(a, b) {
if(a.name > b.name)
return 1
else
return 0
})
进行排序,输出结果:
[ { id: 2, name: 'box001' },
{ id: 6, name: 'box019' },
{ id: 4, name: 'box024' },
{ id: 5, name: 'box028' },
{ id: 1, name: 'box034' },
{ id: 3, name: 'box036' } ]
看似没什么问题,可以正常排序。
但是,当
boxes = [ { id: 1, name: 'box034' },
{ id: 2, name: 'box001' },
{ id: 3, name: 'box036' },
{ id: 4, name: 'box024' },
{ id: 5, name: 'box028' },
{ id: 6, name: 'box019' },
{ id: 7, name: 'box023' },
{ id: 8, name: 'box045' },
{ id: 9, name: 'box035' },
{ id: 10, name: 'box011' },
{ id: 11, name: 'box014' } ]
时,排序结果:
[ { id: 6, name: 'box019' },
{ id: 11, name: 'box014' },
{ id: 10, name: 'box011' },
{ id: 2, name: 'box001' },
{ id: 7, name: 'box023' },
{ id: 4, name: 'box024' },
{ id: 5, name: 'box028' },
{ id: 1, name: 'box034' },
{ id: 9, name: 'box035' },
{ id: 3, name: 'box036' },
{ id: 8, name: 'box045' } ]
明显为乱序,呃,,有点意思,像这种直接用 “>”、"<"、"="号来比较两个字符串,array.sort函数能正确处理的元素个数不能超过10个,原因未明。
解决方法,利用string.localeCompare函数代替 “>”、"<"、"=" 的比较方法,即:
boxes.sort(function(a, b) {
return a.name.localeCompare(b.name)
})
W3school中对字符串的 "<" 、">" 和 localeCompare 有如下说明:
把 < 和 > 运算符应用到字符串时,它们只用字符的 Unicode 编码比较字符串,而不考虑当地的排序规则。以这种方法生成的顺序不一定是正确的。例如,在西班牙语中,其中字符 “ch” 通常作为出现在字母 “c” 和 “d” 之间的字符来排序。
localeCompare() 方法提供的比较字符串的方法,考虑了默认的本地排序规则。
more:
JavaScript localeCompare() 方法
分享到:
相关推荐
step1:导入css,js,images到你的project step2:在要排序的页面正确引入 step3:给要排序的table加上id="xxx" ...<script type="text/javascript"> initTableWidget('xxx',0,0,Array('S','S','S',0),false); </script>
JavaScript中的Array对象有自己的排序方法sort(),对数组中的数据项进行排序,但是有时候排序结果不尽如人意,比如 var arr = [12, 1, 2, 21, 3]; arr.sort(); alert(arr); 得到的结果为 1,12,2,21,3 这是...
var sortBy = function(nodes){ var result = [], array = [], n = nodes.length, i = n, node; while(node = nodes[–n]){ (array[n] = new Number(~~node.sourceIndex))._ = node; } array.sort(fu
javascript数组排序汇总 //排序算法 [removed] = function(){ var array = [0,1,2,44,4, 324,5,65,6,6, 34,4,5,6,2, 43,5,6,62,43, 5,1,4,51,56, 76,7,7,2,1, 45,4,6,7,8]; //var array = [4,2,5,1,0,3]; ...
但是让我感到意外的是,下面有个网友回复说,javascript中的Array本身的sort方法才是最快的,比快速排序算法都快,当时看到了很是郁闷,因为当时花了好长时间在排序算法上,居然忘记了Array本身的sort方法 不过...
一.首先给大家介绍js中内置的 sort() 方法 此方法默认是按字母顺序对数组中的元素进行排序的,说得更精确点,是按照字符编码的顺序进行排序。 看如下例子: ... * @param array 要排序的json数组对象 * @param
本文实例讲述了JavaScript对JSON数组简单排序操作。分享给大家供大家参考,具体如下: 我们经常回使用到数据格式 var arr=[{num:1},{num:3},{num:2}] 如何根据数组里面的JSON数据的某个key进行排序 javascript有一...
动手操作: 数组的升序与降序排列练习 1 升序排列代码 <html> <head> 数组数字大小排序</title> </head> <body> 让数组按照升序降序排列</p> 这里写个数组 var array=[89,28,49,654,6758,5768];</p> 升序输出:</p>...
javascript排序函数实现数字排序 [removed] function SortNumber(obj,func) //定义通用排序函数 { //参数验证,如果第一个参数不是数组或第二个参数不是函数则抛出异常 if(!(obj instanceof Array) || !(func ...
前端开源库-sorted-array排序数组,用JavaScript实现John von Neumann的排序数组。实现插入排序和二进制搜索以快速插入和删除。
排序算法 排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心...JavaScript的Array的sort()方法就是用于排序的,但是排序结果可能让你大吃一惊: // 看上去正常的结果: ['Google', 'Apple',
reverse方法将一个Array对象中的元素位置进行反转,sort方法返回一个元素已经进行了排序的 Array 对象,下面为大家介绍下
JavaScript常用数组排序方法,冒泡排序和sort()方法的使用
本篇文章主要介绍了JavaScript中数组Array.sort()的排序方法。具有很好的参考价值,下面跟着小编一起来看下吧
JavaScript数组sort()方法排序数组的元素。 语法 array.sort( compareFunction ); 下面是参数的详细信息: compareFunction : 指定一个函数,定义排序次序。如果省略,数组字典顺序排序。 返回值: 返回一个排序的...
本文实例讲述了JavaScript自定义数组排序方法。分享给大家供大家参考。具体分析如下: Array中有自带的排序功能,这个使用起来比较方便,我们有一点必须清楚,就是排序的依据,如果sort不传入参数的话,那就是按照...
我们经常给 String,Function,Array 的原型加上自定义的扩展函数,比如去除字符串空格,数组排序等
sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。 如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一: 负值,如果所传递的第一个参数比第二个参数小。 零,...
目的: 如何将 JavaScript 嵌入到 HTML 中 网页中嵌入脚本有两种方式:使用标签或外部 *. js文件 理解变量、数据类型和运算符 JavaScript 中声明变量:var 变量名 ...Array对象常用的属性是length,排序方法:sort