按Javascript中的特定键值对数组进行排序

时间:2020-11-07 19:01:30

标签: javascript

我有一个重复的字符串数组,没有特定的顺序或排序。

const array = ["Train", "Car", "Car", "Train", "Bicycle", "Car", "Bicycle", "Car", "Train"]

我想按特定顺序对数组进行排序,特别是Train, Bicycle, Car

因此应该对其进行排序。

["Train", "Train", "Train", "Bicycle", "Bicycle", "Car", "Car", "Car", "Car"]

此外,如果数组不包含字符串之一,则它仍应遵循相同的顺序,只是跳过该字符串即可。

我尝试了多种方式对它进行排序,但是没有运气。感谢帮助!

2 个答案:

答案 0 :(得分:1)

简单的订单功能可以完成您的工作

const array = [
  'Train',
  'Car',
  'Car',
  'Train',
  'Bicycle',
  'Car',
  'Bicycle',
  'Car',
  'Train',
];
const order = (str) => {
  if (str === 'Train') return 1;
  if (str === 'Bicycle') return 2;
  if (str === 'Car') return 3;
  return 0;
};

const ret = array.sort((x, y) => order(x) - order(y));
console.log(ret);

答案 1 :(得分:1)

您可以按所需顺序获取一个对象,然后按对象的值排序。

const
    array = ["Train", "Car", "Car", "Train", "Bicycle", "Car", "Bicycle", "Car", "Train"],
    order = { Train: 1, Bicycle: 2, Car: 3 };

array.sort((a, b) => order[a] - order[b]);

console.log(...array);