有这么一个数组:
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() 方法
分享到:
相关推荐
例如,使用`Array.prototype.sort()`函数对表格数据进行排序,再利用DOM操作更新表格内容。 4. **事件监听**:为了实现点击表头排序,需要给每个表头添加`click`事件监听器。当用户点击表头时,触发相应的排序逻辑...
例如,可以使用`Array.prototype.sort()`函数,根据特定规则对数据进行比较排序。 - 对于数字排序,我们可以直接使用JavaScript的自然排序,或者自定义比较函数,确保小数也能正确排序。 - 日期排序通常需要将...
JavaScript表格排序是一个常见的需求,特别是在网页中展示数据时。它允许用户通过点击表头来对数据进行升序或降序排列。在这个实例中,我们将深入探讨JavaScript如何实现表格的动态排序。 首先,我们需要理解HTML...
`array.js` 文件可能包含了对数组操作的一些自定义函数或者扩展,例如可能实现了数组去重、查找指定元素的索引、排序等功能。这些功能可以通过阅读源码来了解其具体的实现方式和用途。 接着,Map是ES6中新增的一种...
在JavaScript中,数组的排序可以通过`Array.prototype.sort()`方法来实现。这个方法接受一个可选的比较函数作为参数,用于定义元素的排序顺序。默认情况下,`sort()`会将所有元素转换为字符串并按照字典顺序进行排序...
JavaScript表格排序是网页开发中常见的需求,特别是在处理动态数据或者用户交互时。本文将深入探讨如何使用JavaScript实现表格数据的排序功能。 首先,我们需要理解HTML `<table>`元素的基本结构。一个表格由`...
在JavaScript中,`Array.prototype.sort()`函数是用于对数组进行排序的基础工具,但它默认的排序方式是基于字符串的字典顺序,这并不适合混合数据类型的排序。例如,如果一个数组有字符串和数字,数字会按照它们的...
在JavaScript编程语言中,字符串排序是一项常见的操作,特别是在处理用户输入、数据分析或者构建动态内容时。标题"javascript字符串排序"提示我们关注的重点是如何在JS环境中有效地对字符串进行排序。描述中提到的...
随着深入学习,你还会接触到更多高级特性,如数组的遍历方法、排序以及各种内置函数等,这些都是提升编程能力的重要组成部分。掌握JavaScript数组不仅可以帮助你编写更加高效和可维护的代码,还能让你更好地理解其他...
排序算法可以使用JavaScript内置的`Array.prototype.sort()`方法,结合比较函数来实现。 ```javascript Table.prototype.sort = function(column, order) { this.data.sort((a, b) => { if (order === 'asc') { ...
在JavaScript中,插入排序可以通过不同的实现方式来完成。 1. **通用实现**: 这是最基础的插入排序实现方式,它通过遍历待排序数组,从当前项的左侧开始,自右往左逐个与已排序项进行比较,如果当前项小于已排序...
在JavaScript编程中,表格排序是一项常见的需求,尤其是在数据展示和管理的应用中。本文将深入探讨如何实现JavaScript表格的顺序和逆序排序,并结合高亮显示技术,使用户能清晰地看到排序后发生变化的列。 首先,...
此外,还可以使用`Array.prototype.sort()`方法的第三个参数,设置排序的顺序。默认情况下,`sort()`方法按升序排列,但通过传递`-1`和`1`,我们可以改变这个行为: ```javascript valuesArray.sort((a, b) => (a >...
在JavaScript中,这些排序算法可以通过Array.prototype.sort()方法来实现,但原生的sort()函数默认使用的是快速排序的变种,对于复杂的数据类型或自定义排序规则,我们需要提供一个比较函数来确保正确排序。...
本文将深入探讨如何使用JavaScript实现表格数据的排序功能。 首先,我们需要理解HTML表格的基本结构。一个HTML表格由`<table>`元素定义,其中包含`<tr>`(行)元素和`<td>`(单元格)元素。如果需要对表头进行排序...
在JavaScript开发过程中,对数组或对象进行排序是一项常见的需求。为了应对不同场景下的排序需求,本文将介绍一个自定义的JavaScript函数,该函数支持对数组或对象进行排序,并且能够根据数组或对象中嵌套的任意深度...
var newarray = arr.map(pow); ``` 这里的`pow`函数将数组中的每个元素平方,`map()`返回的新数组就是 `[1, 4, 9, 16, 25]`。 2. **reduce()** `reduce()`方法则将数组元素逐步减少到单个累积值。它接受一个...
1. `Array.prototype.sort()`:JavaScript 提供了一个内置的方法 `sort()`,可以对数组中的元素进行排序。默认情况下,它按照字典顺序(升序)排列元素,但也可以通过传递一个比较函数来实现自定义排序。 2. 自定义...
【JavaScript 节点排序详解】 在JavaScript中,对HTML或XML文档中的节点进行排序是一项常见的任务,特别是在处理DOM操作时。本节将探讨一种基于`sourceIndex`属性的排序方法,以及当该属性不可用时如何利用最近公共...