Javascript 如何根据字符串对对象进行排序
我有一个像这样的对象,我需要从中按id排序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
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)