javascript - 根据另一个数组的顺序对数组进行排序

标签 javascript sorting

我有一个大小如下的数组:

var arr = [
  'small',
  'small',
  'small',
  'small',
  ...
  'medium',
  'medium',
  'medium',
  'medium',
  ...
  'big',
  'big',
  ...
];

我需要按照这个顺序重新组织这个数组:
var order = ['small', 'small', 'medium', 'medium', 'big'];

所以结果最终是这样的:
var arr = [
  'small',
  'small',
  'medium',
  'medium',
  'big',

  'small',
  'small',
  'medium',
  'medium',
  'big'

  ...
];

我知道 SO 中的其他类似问题,但到目前为止我找不到任何东西。我不确定如何处理这个问题。我在想sort应该做,但我要测试什么?这似乎很简单,但我被卡住了,不知道从哪里开始。有什么提示吗?

最佳答案

只需为您的排序方法定义一个记分器。
这是你的代码。试试看

var init_arr = ['small', 'big', 'big', 'medium'];

var scorer = {
   small: 0,
   medium: 1,
   big: 2
}

// You can use the same array too. I am creating new one.
var final_arr = init_arr.sort(function(a,b) {
   return scorer[a]-scorer[b];
});

alert(final_arr); //small, medium, big, big

Working Fiddle

关于javascript - 根据另一个数组的顺序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15540211/

相关文章:

javascript - 有人可以告诉我从字符串中删除特定内联 CSS 样式的最佳方法吗?

javascript - 无法在 settimeout 内将参数传递给 this.style

java - 如何使 Java 中的自定义泛型类型链表排序?

php - 对数标度 - PHP 排名

python - 按 "column"的字母顺序对python中的列表列表进行排序

javascript - 在 Woocommerce 中交换图像变化的问题

javascript - Bootstrap 3 carousel lazyload 插件不适用于 jQuery 1.11

javascript - CSS 3 Flexbox 模型宽度 jQuery

python - 以金融符号对期限进行排序

java - 如何按时间和相似度对列表进行排序?