在 JavaScript 中对字符串进行排序
由于字符串属性的唯一性,许多 JavaScript 开发人员在尝试基于字符串属性对对象列表进行排序时遇到了挑战JavaScript 中字符串的行为。本文探讨了这一常见问题的解决方案。
问题:
正如您所发现的,只需从一个字符串中减去另一个字符串,如 a.attr - b.attr ,不能准确地对 JavaScript 中的字符串进行排序。这是因为 JavaScript 将字符串视为 Unicode 字符,并且基本的算术运算不适合对它们进行比较。
解决方案:
要有效地对字符串进行排序,您可以使用String.prototype.localeCompare 方法。此方法提供了区域设置敏感的字符串比较,使其更适合排序。这是使用 localeCompare 的代码的更新版本:
list.sort(function(a, b) { return ('' + a.attr).localeCompare(b.attr); });
请注意,我们添加了一个空字符串连接 ('' a.attr) 以确保两个值都被强制转换为字符串。这是为了避免潜在的异常。
替代方案:
如果您喜欢更简洁的方法并且不需要考虑区域设置敏感性,您可以使用以下内容代码片段:
if (item1.attr < item2.attr) return -1; if ( item1.attr > item2.attr) return 1; return 0;
以上是如何在 JavaScript 中正确排序字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!