Javascript 如何根据字符串对对象进行排序

Javascript 如何根据字符串对对象进行排序,javascript,Javascript,我有一个像这样的对象,我需要从中按id排序 64: {id: "83", name: "(83) x"} 65: {id: "84", name: "(84) y"} 66: {id: "85", name: "(85) z"} 67: {id: "86", name: "(86) a"} 68: {id: "9", name: "(9) b"} 我已经检查了很多例子,我都试过了,但没有一个对我有用 我先试试这个: obj.sort((a, b) => { ret

我有一个像这样的对象,我需要从中按id排序

64: {id: "83", name: "(83) x"}
65: {id: "84", name: "(84) y"}
66: {id: "85", name: "(85) z"}
67: {id: "86", name: "(86) a"}
68: {id: "9", name: "(9) b"}
我已经检查了很多例子,我都试过了,但没有一个对我有用

我先试试这个:

obj.sort((a, b) => {
            return a.id > b.id;
        })
那么


有人能帮忙吗?

那么,像这样的事情

let op=[{id:“83”,name:“(83)x”},
{id:“84”,姓名:“(84)y”},
{id:“85”,名称:“(85)z”},
{id:“86”,姓名:“(86)a”},
{id:“9”,name:“(9)b”}).sort((a,b)=>{
const nA=编号(a.id);
const nB=编号(b.id);
返回值(nA>nB)?1:((nB>nA)?-1:0)
});

console.log(op)
对于这里提到的方法,我有另一种解决方案

首先,我们将对象转换为数组。接下来,我们必须提供一个自定义排序功能。我们通过使用并将
numeric:true
选项传递给localeCompare对其进行排序。我将as
保留为未定义的
,但根据您的用例,您可以传入自己的区域设置选项。
const obj={
64:{id:“83”,名称:“(83)x”},
65:{id:“84”,姓名:“(84)y”},
66:{id:“85”,姓名:“(85)z”},
67:{id:“86”,姓名:“(86)a”},
68:{id:“9”,姓名:“(9)b”}
}
const result=Object.values(obj.sort)((a,b)=>{
返回a['id'].localeCompare(b['id'],未定义,{numeric:true});
});

控制台日志(结果)您的id是字符串,因此将其转换为int以便对其进行排序。改用
parseInt

var obj=[{id:“83”,名称:“(83)x”},{id:“84”,名称:“(84)y”},{id:“85”,名称:“(85)z”},{id:“86”,名称:“(86)a”},{id:“9”,名称:“(9)b”};
对象排序((a,b)=>{
返回parseInt(a.id)>parseInt(b.id);
});

控制台日志(obj)您不需要强制执行-1、1和0结果,因为如果结果为负,则顺序将保持不变,如果结果为正,则顺序将互换,因此您可以直接减去它们:

let arr=[{id:“83”,name:“(83)x”},
{id:“84”,姓名:“(84)y”},
{id:“85”,名称:“(85)z”},
{id:“86”,姓名:“(86)a”},
{id:“9”,名称:“(9)b}];
设resp=arr.sort((a,b)=>parseInt(a.id)-parseInt(b.id));

控制台日志(resp)请查看此简短解决方案

obj.sort((a,b) => +a.id-+b.id)

您的排序的当前结果是什么?此外,您必须在排序中减去您的值,才能对它们进行实际排序,因此您可能应该将它们更改为numbers@ChrisBrownie55结果与上述相同排序时是否尝试解析
id
?(
parseInt
)您有字符串,而不是数字。强制它们:
obj.sort((a,b)=>(+a.id>+b.id)?1:(+b.id>+a.id)?-1:0)。或者简单地
obj.sort((a,b)=>+a.id-+b.id)。等等,您正在尝试对对象进行排序?对象不是索引基。我已更新了您的代码。在代码段中添加了代码。如果您发现任何与您的意思不一致的内容,请告诉我或将其还原。一个简单的
返回nA-nB
将达到其目的:更优雅、更容易理解read@DavideVitali你说得对。但我通常尝试用OP自己的作品来回答他们的问题。我喜欢准确地提供他们缺少的东西,这样他们就很容易看到他们必须做什么。然而,考虑到最好有一个
a-b
的东西,我将编辑我的回答简短而甜蜜!这应该是国际海事组织公认的答案
obj.sort((a,b) => +a.id-+b.id)