我是一名新的 JS 学生,我发现了一个我自己无法解决的问题。我有一个对象数组,这些对象的键之一是“优先级”,该键的值为:“低”、“中”、“高”。我想将数组中的对象从最低优先级到最高优先级排序,但我无法弄清楚。
let thingsToDo = [
{
name: 'Call',
priority: 'low',
},
{
name: 'Cook',
priority: 'low',
},
{
name: 'Eat',
priority: 'high',
},
{
name: 'Sleep',
priority: 'mid',
}
];
我试图制作一些自定义排序功能,但我不知道该怎么做。我认为一个好的解决方案是给这些值一些数字,然后对其进行排序。对我来说非常重要的是将这些值保留为字符串。一定有
priority: "low"
我一直在寻找解决方案,但没有找到。
我不知道该怎么做,所以如果有经验丰富的好人,我恳求帮助。
您可以将所有优先级放入一个数组中,并根据对象的优先级属性在该数组中的索引对对象进行排序。
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);
尝试一下
const 水果 = ["香蕉", "橙子", "苹果", "芒果"]; 水果.sort();
您可以创建一个对象,将它们映射到可比较的值,然后根据它们进行排序:
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)