我知道之前有人問過類似的問題,我在這里提到了這個問題:在 javascript 中對 json 物件進行排序,但我仍然找不到我的問題的答案。所以我來了。我有一個 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"
}
]
uj5u.com熱心網友回復:
用字串排序,而不是數字比較。
const 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 ? 1 : (a.toothNumber === b.toothNumber ? 0 : -1 );
});
console.log(json);
uj5u.com熱心網友回復:
你可以這樣做
const 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.split(",")[0] - b.toothNumber.split(",")[0];
});
console.log(json)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/340758.html
