我是新的 JS 學生,我發現了一個我無法獨自解決的問題。我有一個物件陣列,其中一個物件的鍵是“優先級”,該鍵的值是:“低”、“中”、“高”。我想將陣列中的物件從最低優先級排序到最高優先級,但我無法弄清楚。
let thingsToDo = [
{
name: 'Call',
priority: 'low',
},
{
name: 'Cook',
priority: 'low',
},
{
name: 'Eat',
priority: 'high',
},
{
name: 'Sleep',
priority: 'mid',
}
];
我試圖制作一些自定義排序功能,但我不知道該怎么做。我認為一個好的解決方案是給這些值一些數字,然后對其進行排序。對我來說非常重要的是將這些值保留為字串。必須有priority: "low"
我一直在尋找解決方案,但我沒有找到。
我不知道怎么做,所以如果有一些有更大經驗的好人,我請求幫助。
uj5u.com熱心網友回復:
您可以將所有優先級放在一個陣列中,并根據其在該陣列中的優先級屬性的索引對物件進行排序。
let thingsToDo = [
{
name: 'Call',
priority: 'low',
},
{
name: 'Cook',
priority: 'low',
},
{
name: 'Eat',
priority: 'high',
},
{
name: 'Sleep',
priority: 'mid',
}
];
let priorities = ['low', 'mid', 'high'];
thingsToDo.sort((a, b)=>priorities.indexOf(a.priority) - priorities.indexOf(b.priority));
console.log(thingsToDo);
uj5u.com熱心網友回復:
嘗試一下
常量水果 = [“香蕉”、“橙子”、“蘋果”、“芒果”]; 水果.sort();
uj5u.com熱心網友回復:
您可以創建一個物件,將它們映射到可比較的值,然后根據它們進行排序:
const priority = {
low: 1,
mid: 2,
high: 3,
};
thingsToDo.sort(
(a, b) => priority[a.priority] - priority[b.priority]
);
這是一個作業片段:
let thingsToDo = [
{
name: 'Call',
priority: 'low',
},
{
name: 'Cook',
priority: 'low',
},
{
name: 'Eat',
priority: 'high',
},
{
name: 'Sleep',
priority: 'mid',
},
];
const priority = {
low: 1,
mid: 2,
high: 3,
};
thingsToDo.sort(
(a, b) => priority[a.priority] - priority[b.priority]
);
console.log(thingsToDo)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/471917.html
標籤:javascript 排序
