【发布时间】:2021-12-14 02:32:14
【问题描述】:
我知道之前有人问过类似的问题,我在这里提到了这个问题:sort json object in javascript 但我仍然找不到我的问题的答案。所以我来了。我有一个 JSON 对象结构如下:
[
{
"toothNumber": "01",
"name": "John"
},
{
"toothNumber": "18",
"name": "John"
},
{
"toothNumber": "19",
"name": "John"
},
{
"toothNumber": "17",
"name": "John"
},
{
"toothNumber": "01,32",
"name": "John"
},
{
"toothNumber": "25,32",
"name": "John"
},
{
"toothNumber": "",
"name": "John"
},
{
"toothNumber": "15",
"name": "John"
}
]
当我使用下面的代码进行排序时,我没有得到预期的结果:
json.sort(function(a, b){
return a.toothNumber - b.toothNumber;
});
下面是实际结果,不是我预期的结果。任何帮助将不胜感激。
实际结果:
[
{
"toothNumber": "",
"name": "John"
},
{
"toothNumber": "01",
"name": "John"
},
{
"toothNumber": "15",
"name": "John"
},
{
"toothNumber": "17",
"name": "John"
},
{
"toothNumber": "18",
"name": "John"
},
{
"toothNumber": "19",
"name": "John"
},
{
"toothNumber": "01,32",
"name": "John"
},
{
"toothNumber": "25,32",
"name": "John"
}
]
预期结果:
[
{
"toothNumber": "",
"name": "John"
},
{
"toothNumber": "01",
"name": "John"
},
{
"toothNumber": "01,32",
"name": "John"
},
{
"toothNumber": "15",
"name": "John"
},
{
"toothNumber": "17",
"name": "John"
},
{
"toothNumber": "18",
"name": "John"
},
{
"toothNumber": "19",
"name": "John"
},
{
"toothNumber": "25,32",
"name": "John"
}
]
【问题讨论】:
-
你减去的是字符串而不是数字。先转换成数字。
-
不确定您希望它如何工作。牙号首先是一个字符串,在某些项目中它是一个多值字符串。比如
"25,32" - "18"的结果应该是什么? -
@jarmod 这些是保存在客户端数据库中的有效值。如果它们都是一个索赔的一部分,他们会保存多个以逗号分隔的牙齿编号。我同意吗,不,但这是我拥有的数据
-
表示完全没有问题。我只是强调一个事实,即导致
"25,32" - "18"的实现没有什么意义。
标签: javascript json sorting javascript-objects