`
songkang666
  • 浏览: 105501 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

javascript array 排序

 
阅读更多
有这么一个数组:
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() 方法
分享到:
评论
1 楼 nonocast 2013-07-15  
给你一个思路,
npm install underscore

_ = require 'underscore'

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

console.log _.sortBy boxes, 'name'


http://underscorejs.org/#sortBy

相关推荐

    Javascript表格排序大全

    例如,使用`Array.prototype.sort()`函数对表格数据进行排序,再利用DOM操作更新表格内容。 4. **事件监听**:为了实现点击表头排序,需要给每个表头添加`click`事件监听器。当用户点击表头时,触发相应的排序逻辑...

    JavaScript实现表格排序

    例如,可以使用`Array.prototype.sort()`函数,根据特定规则对数据进行比较排序。 - 对于数字排序,我们可以直接使用JavaScript的自然排序,或者自定义比较函数,确保小数也能正确排序。 - 日期排序通常需要将...

    JavaScript Table排序

    JavaScript表格排序是一个常见的需求,特别是在网页中展示数据时。它允许用户通过点击表头来对数据进行升序或降序排列。在这个实例中,我们将深入探讨JavaScript如何实现表格的动态排序。 首先,我们需要理解HTML...

    JavaScript实现Array(数组)和Map

    `array.js` 文件可能包含了对数组操作的一些自定义函数或者扩展,例如可能实现了数组去重、查找指定元素的索引、排序等功能。这些功能可以通过阅读源码来了解其具体的实现方式和用途。 接着,Map是ES6中新增的一种...

    javascript经典特效---数字排序.rar

    在JavaScript中,数组的排序可以通过`Array.prototype.sort()`方法来实现。这个方法接受一个可选的比较函数作为参数,用于定义元素的排序顺序。默认情况下,`sort()`会将所有元素转换为字符串并按照字典顺序进行排序...

    javascript Table排序

    JavaScript表格排序是网页开发中常见的需求,特别是在处理动态数据或者用户交互时。本文将深入探讨如何使用JavaScript实现表格数据的排序功能。 首先,我们需要理解HTML `&lt;table&gt;`元素的基本结构。一个表格由`...

    javascript 表格排序多种数据类型排序(中文混合数字排序).zip

    在JavaScript中,`Array.prototype.sort()`函数是用于对数组进行排序的基础工具,但它默认的排序方式是基于字符串的字典顺序,这并不适合混合数据类型的排序。例如,如果一个数组有字符串和数字,数字会按照它们的...

    javascript字符串排序

    在JavaScript编程语言中,字符串排序是一项常见的操作,特别是在处理用户输入、数据分析或者构建动态内容时。标题"javascript字符串排序"提示我们关注的重点是如何在JS环境中有效地对字符串进行排序。描述中提到的...

    javascript array tutorial

    随着深入学习,你还会接触到更多高级特性,如数组的遍历方法、排序以及各种内置函数等,这些都是提升编程能力的重要组成部分。掌握JavaScript数组不仅可以帮助你编写更加高效和可维护的代码,还能让你更好地理解其他...

    javascript表格排序案例(面向对象)案例资料

    排序算法可以使用JavaScript内置的`Array.prototype.sort()`方法,结合比较函数来实现。 ```javascript Table.prototype.sort = function(column, order) { this.data.sort((a, b) =&gt; { if (order === 'asc') { ...

    JavaScript插入排序1

    在JavaScript中,插入排序可以通过不同的实现方式来完成。 1. **通用实现**: 这是最基础的插入排序实现方式,它通过遍历待排序数组,从当前项的左侧开始,自右往左逐个与已排序项进行比较,如果当前项小于已排序...

    javascript表格排序(顺序和逆序)并高亮显示

    在JavaScript编程中,表格排序是一项常见的需求,尤其是在数据展示和管理的应用中。本文将深入探讨如何实现JavaScript表格的顺序和逆序排序,并结合高亮显示技术,使用户能清晰地看到排序后发生变化的列。 首先,...

    javascript表单排序

    此外,还可以使用`Array.prototype.sort()`方法的第三个参数,设置排序的顺序。默认情况下,`sort()`方法按升序排列,但通过传递`-1`和`1`,我们可以改变这个行为: ```javascript valuesArray.sort((a, b) =&gt; (a &gt;...

    JavaScript-使用javascript开发的排序算法-sorting.zip

    在JavaScript中,这些排序算法可以通过Array.prototype.sort()方法来实现,但原生的sort()函数默认使用的是快速排序的变种,对于复杂的数据类型或自定义排序规则,我们需要提供一个比较函数来确保正确排序。...

    javascript 操作 Table 排序

    本文将深入探讨如何使用JavaScript实现表格数据的排序功能。 首先,我们需要理解HTML表格的基本结构。一个HTML表格由`&lt;table&gt;`元素定义,其中包含`&lt;tr&gt;`(行)元素和`&lt;td&gt;`(单元格)元素。如果需要对表头进行排序...

    JavaScript对象数组排序函数及六个用法

    在JavaScript开发过程中,对数组或对象进行排序是一项常见的需求。为了应对不同场景下的排序需求,本文将介绍一个自定义的JavaScript函数,该函数支持对数组或对象进行排序,并且能够根据数组或对象中嵌套的任意深度...

    JavaScript array常用方法代码实例详解

    var newarray = arr.map(pow); ``` 这里的`pow`函数将数组中的每个元素平方,`map()`返回的新数组就是 `[1, 4, 9, 16, 25]`。 2. **reduce()** `reduce()`方法则将数组元素逐步减少到单个累积值。它接受一个...

    javascript直接排序

    1. `Array.prototype.sort()`:JavaScript 提供了一个内置的方法 `sort()`,可以对数组中的元素进行排序。默认情况下,它按照字典顺序(升序)排列元素,但也可以通过传递一个比较函数来实现自定义排序。 2. 自定义...

    javascript 节点排序 2

    【JavaScript 节点排序详解】 在JavaScript中,对HTML或XML文档中的节点进行排序是一项常见的任务,特别是在处理DOM操作时。本节将探讨一种基于`sourceIndex`属性的排序方法,以及当该属性不可用时如何利用最近公共...

Global site tag (gtag.js) - Google Analytics