在实现前端页面排序功能过程中遇到的问题,由于自己的粗心导致了生产上问题。
原本是通过js原生的sort方法排序,比较纯字符串数字大小。但是没有将纯字符串数字转换为数字就直接比较了。
如:“13” 与 “126”比较的时候会返回true,但是我的本意是返回false.需要修改为parseInt("13",10) > parseInt("126",10)后再比较。
但是这让我想起了在ruby中比较字符串,不是一起比较字符串大小,而是分别一个一个字符比较,如果有一个大于那么就返回。
那么“13” 与 “126”比较为什么前者大于后者呐?这时候让我想起了每个字符转为unicode后在比较。
在Unicode值和字符串中的字符间转换,要获得字符的Unicode编码,可以使用string.charCodeAt(index)方法,反之String.fromCharCode()方法。
通过比较("1").charCodeAt(0)返回49,("3").charCodeAt(0)返回51,("2").charCodeAt(0)返回50,这也就是为什么“13” > “126”。以后在比较字符串时候需要注意这个问题。
参考:
http://www.cnblogs.com/xuebin/articles/1296837.html
分享到:
相关推荐
本手册将深入探讨JavaScript中的字符串,这是编程中常用的数据类型,对于理解和操作文本至关重要。 一、字符串基础 在JavaScript中,字符串是不可变的,意味着一旦创建,其内容就不能更改。字符串可以用单引号(' ')...
- `charAt(index)`方法用来获取字符串中指定索引处的字符。 ```javascript var str = 'hello,world'; console.log(str.length); // 输出12 console.log(str.charAt(0)); // 输出h console.log(str.charAt(str....
3. **字符访问**:可以使用`charAt()`方法来访问字符串中的某个字符。例如: ```javascript var myStr = "Hello, World!"; console.log(myStr.charAt(7)); // 输出 "W" ``` 4. **子字符串提取**:可以使用`...
例如,如果字符串与数字进行比较,JavaScript将尝试将字符串转换为数字后再进行比较。由于这种自动转换的特性,有时会出现一些反直觉的结果。例如,字符串"1"和数字1在使用“==”进行比较时会被认为是相等的。这是...
例如,如果我们有一个包含数字字符串的数组,而我们希望按数值大小而非字典顺序排序,可以这样定义比较函数: ```javascript let arr = ['10', '2', '9']; arr.sort(function(a, b) { return parseInt(a) - ...
- **功能**: 搜索一个子字符串在字符串中首次出现的位置。 - **参数**: 第一个参数是要搜索的子字符串;第二个参数是可选的,表示搜索起始位置的索引。 - **返回值**: 如果找到了子字符串,则返回其首次出现的位置;...
System.out.println("字符串中含有非数字字符"); break; } } else { System.out.println("字符串是数字类型"); } ``` 或者,可以尝试转换整个字符串为整数,捕获 `NumberFormatException` 异常: ```java ...
=.*\d)` 确保字符串中包含至少一个数字。 - `(?=.*[a-z])` 确保字符串中包含至少一个小写字母。 - `(?=.*[A-Z])` 确保字符串中包含至少一个大写字母。 - `[a-zA-Z\d]+` 匹配任何字母或数字,`+` 表示至少一次。 在...
这个函数通过遍历字符串中的每个字符,并检查其Unicode编码是否位于表情符号的特定范围内。 5. Unicode编码范围的应用:Unicode为每个字符分配了一个唯一的编码点,表情符号也包含在内。在`isEmojiCharacter()`函数...
"截取指定长度的字符串"这个主题涉及到的是如何从一个字符串中提取出特定长度的部分。这在处理用户输入、数据展示、信息提取等多个场景中都非常常见。接下来,我们将深入探讨这个知识点。 首先,让我们明确什么是...
总结,字符串转ASCII和ASCII转字符串是编程中常见的操作,主要涉及对字符和其对应的数字表示之间的转换。理解这些概念和实现方式对于理解和处理字符数据至关重要。通过学习不同编程语言中的相关函数和方法,你可以...
2. **使用parseInt和parseFloat函数**:parseInt用于解析字符串中的整数部分,而parseFloat则用于解析浮点数。 ```javascript parseInt("3blindmice"); // 3 parseFloat("3.14meters"); // 3.14 ``` 3. **关于...
在不同的编程语言中,这些操作可能有不同的实现,例如在Python中,可以使用内置的`int()`函数配合`base=16`参数直接完成字符串到16进制数字的转换,而在JavaScript中,可以使用`parseInt()`或`Number()`函数。...
这个方法返回一个数字表示参考字符串是否到来之前或之后或相同的排序顺序给定的字符串。 语法 string.localeCompare( param ) 下面是参数的详细信息: param : 字符串对象进行比较的字符串 返回值: 0 : 字符串...
在 ECMAScript5 中,字符串可以像数组一样被索引,使用方括号加数字索引来访问字符串中的特定字符。例如: var str = "hello"; console.log(str[0]);//h console.log(str[1]);//e console.log(str[false]);//...
在JavaScript中,数字和字符串的相加是一个常见的操作,这种操作涉及到JavaScript中的类型转换机制。在JavaScript中,当你尝试将一个数字和一个字符串相加时,会发生隐式类型转换,数字会被转换成字符串,然后两个...
在JavaScript中,正则表达式是一种特殊的字符串模式,可以用来匹配、查找或替换字符串中的字符组合。在split()函数中使用正则表达式作为分隔符,可以实现对字符串的多重分割。具体来说,我们可以在正则表达式中列出...
虽然描述为空,但我们可以推断,这个博客可能详细介绍了如何在JavaScript中进行JSON对象与字符串的转化操作,以及在实际应用中的重要性。 **标签中的知识点:** 1. **源码**:这可能意味着博客可能包含了实际的...
// 遍历字符串中的每个字符 for (var i = 0; i ; i++) { if (/^[a-zA-Z0-9]*$/.test(content.charAt(i))) { // 判断是否为英文或数字 num += 1; contentVal += content.charAt(i); } else if (/^[\u4e00-\u9fa5]...
字符串引号的嵌套是JavaScript的一个特性,允许你在字符串中混合使用单引号和双引号。这意味着你可以用单引号包围双引号内的文本,反之亦然,这样就不需要在字符串内部使用转义字符。例如: ```javascript var ...