我有一个希望基于字符串类型的字段attr进行排序的对象列表.我试着用-

list.sort(function (a, b) {
    return a.attr - b.attr
})

但是发现-似乎不能处理JavaScript中的字符串.如何根据类型为String的属性对对象列表进行排序?

推荐答案

每个示例使用String.prototype.localeCompare a:

list.sort(function (a, b) {
    return ('' + a.attr).localeCompare(b.attr);
})

我们强制a.attr为字符串以避免异常.localeCompare已经得到since Internet Explorer 6和Firefox 1的支持.您还可能会看到使用的以下代码与区域设置无关:

if (item1.attr < item2.attr)
  return -1;
if ( item1.attr > item2.attr)
  return 1;
return 0;

Javascript相关问答推荐

如何使用JavaScript动态地将CSS应用于ToDo列表?

将数据从strapi提取到next.js,但响应延迟API URL

是什么原因导致此Angular 16电影应用程序中因类型错误而不存在属性?

微软Edge Select 间隙鼠标退出问题

如何解决CORS政策的问题

嵌套异步JavaScript(微任务和macrotask队列)

将自定义排序应用于角形数字数组

如何让npx在windows中运行js脚本?

在执行异步导入之前判断模块是否已导入()

使用原型判断对象是否为类的实例

try 使用javascript隐藏下拉 Select

如何将innerHTML字符串修剪为其中的特定元素?

在Matter.js中添加从点A到另一个约束的约束

为什么JPG图像不能在VITE中导入以进行react ?

MarkLogic-earch.suggest不返回任何值

JS Animate()方法未按预期工作

未捕获语法错误:Hello World中的令牌无效或意外

如何使用Astro优化大图像?

如何在尚未创建的鼠标悬停事件上访问和着色div?

我为什么要使用回调而不是等待?