按字符串值将JSON对象排序到Javascript数组

按字符串值将JSON对象排序到Javascript数组,javascript,arrays,json,sorting,reactjs,Javascript,Arrays,Json,Sorting,Reactjs,我有一个React.js应用程序,它从后端接收JSON数据 我不确定如何用字符串键而不是数字键对对象进行排序——如果是数字键,我可以用很多例子 下面是一个示例字符串。我要排序的对象是高、中和低。我想先用高的,然后是中的,然后是低的 {"Medium":{"This is inbetween!":[{"key":"123", "type":"inbetween"}]}, "High":{"This is the highest!":[{"key":"3333", "type":"highest"}

我有一个React.js应用程序,它从后端接收JSON数据

我不确定如何用字符串键而不是数字键对对象进行排序——如果是数字键,我可以用很多例子

下面是一个示例字符串。我要排序的对象是
。我想先用高的,然后是中的,然后是低的

{"Medium":{"This is inbetween!":[{"key":"123", "type":"inbetween"}]},
"High":{"This is the highest!":[{"key":"3333", "type":"highest"}]},
"Medium":{"This is inbetween again":[{"key":"12333123", "type":"power"}]},
"Low":{"This is the lowest!":[{"key":"123465", "type":"super low"}]}}
如何将JSON数据排序为数组中的高、中、低字符串?

因此,由于您的“对象”很可能是一个数组(它将是一个无效的对象,具有重复声明,例如medium属性),我假设以下是您的数据的排序方式

您可以通过创建另一个“order”对象对该对象数组进行排序,为键指定一个订单号

我认为以下代码片段可以满足您的要求:

让arr=[
{
“中等”:{
“这是中间的!”[
{
“密钥”:“123”,
“类型”:“中间”
}
]
}
},
{
“高”:{
“这是最高的!”[
{
“密钥”:“3333”,
“类型”:“最高”
}
]
}
},
{
“中等”:{
“这又是介于两者之间的”:[
{
“密钥”:“12333123”,
“类型”:“电源”
}
]
}
},
{
“低”:{
“这是最低的!”[
{
“密钥”:“123465”,
“类型”:“超低”
}
]
}
}
];
让顺序={
高:-3,
中等:-2,
低:-1
}
arr=arr.sort((a,b)=>{
退货订单[Object.keys(a)[0]]-订单[Object.keys(b)[0]];
});
控制台日志(arr)因此,由于您的“对象”很可能是一个数组(它将是一个无效的对象,具有重复的声明,例如Medium属性),我假设以下内容将是您的数据的方式

您可以通过创建另一个“order”对象对该对象数组进行排序,为键指定一个订单号

我认为以下代码片段可以满足您的要求:

让arr=[
{
“中等”:{
“这是中间的!”[
{
“密钥”:“123”,
“类型”:“中间”
}
]
}
},
{
“高”:{
“这是最高的!”[
{
“密钥”:“3333”,
“类型”:“最高”
}
]
}
},
{
“中等”:{
“这又是介于两者之间的”:[
{
“密钥”:“12333123”,
“类型”:“电源”
}
]
}
},
{
“低”:{
“这是最低的!”[
{
“密钥”:“123465”,
“类型”:“超低”
}
]
}
}
];
让顺序={
高:-3,
中等:-2,
低:-1
}
arr=arr.sort((a,b)=>{
退货订单[Object.keys(a)[0]]-订单[Object.keys(b)[0]];
});

控制台日志(arr)为什么不更新问题以显示结果数组的外观?输入对象不是数组,无法排序。可以将其排序为数组。。无论如何,给定对象输入的只有一个“Medium”项。如果希望结果作为数组,当然可以这样做(请参阅Pointy的注释)。你试过什么?你被困在哪里?你的研究发现了什么?JSON既无效(至少缺少逗号,可能更多),而且单独来说,可能不是你想要的(奇怪的嵌套)。@T.J.Crowder试图为我的输入数据做一个示例,可能在某个地方打错了。你为什么不更新这个问题来显示你希望结果数组是什么样子?输入对象不是数组,无法排序。可以将其排序为数组。。无论如何,给定对象输入的只有一个“Medium”项。如果希望结果作为数组,当然可以这样做(请参阅Pointy的注释)。你试过什么?你被困在哪里?你的研究发现了什么?JSON既无效(至少缺少逗号,可能更多),而且单独来说,可能不是你想要的(奇数嵌套)。@T.J.Crowder试图为我的输入数据做一个示例,可能在某个地方打错了。我在一些示例数据上尝试了你的示例(其中有许多高和中数据)我只看到了一个包含len3的数组,其中的内容只有中等大小。谢谢你的例子,不过,我会从它的工作!虽然这是一个好主意(在本例中是a),但我建议在order对象中使用不带零的值,因为这不会为处理未知值创建空间,也不会(可能)按照数组的开始或结束移动。使用您的方法,我如何访问(比如)键为“高”的所有对象
console.log(Arr[].High)
似乎不起作用,而且听起来也不对(我有点累了:),您需要过滤阵列。要获取所有具有high的条目,应该这样做:
console.log(arr.filter(v=>Object.keys(v)[0]='high')
@cbllI在一些示例数据(其中有许多高数据和中数据)上尝试了您的示例,我只使用了一个包含len 3的数组,其中的内容仅为中数据。谢谢你的例子,不过,我会从它的工作!虽然这是一个好主意(在本例中是a),但我建议在order对象中使用不带零的值,因为这不会为处理未知值创建空间,也不会(可能)按照数组的开始或结束移动。使用您的方法,我如何访问(比如)键为“高”的所有对象
console.log(Arr[].High)
似乎不起作用,而且听起来也不正常