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