怎么将自定义排序应用于数组?

原学程将引见若何将自界说排序运用于数组?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

怎么将自定义排序应用于数组? 教程 第1张

成绩描写

我愿望以自界说方法对于数组停止排序。

比方先生的班级:

_.sortBy(["Junior","Senior","Freshman","Sophomore"], function(classlevel){ // ??})

幻想情形下,排序应前往:

["Freshman","Sophomore","Junior","Senior"]

我在想,我能否不妨像如许提早对于班级停止事后排序:

var classlevelRanked = [{ class: "Junior",
rank: 三
 },{ class: "Senior",
rank: 四
 },{ class: "Freshman",
rank: 一
 },{ class: "Sophomore",
rank: 二
 }]

而后运用排序方法:

_.sortBy(classlevelRanked, function(classlevel){  return classlevel.rank;})

但是随后我必需经由过程履行以下操纵去剔除级别:

.map(function(classlevel){ return classlevel["class"];})

有甚么更直交的办法去做到这1面,而没有是事后对于类级别停止排序,而后再将其剔除?

感谢。

推举谜底

您应当可以或许履行以下操纵:

_.sortBy(["Junior","Senior","Freshman","Sophomore"], function(element){ var rank = {
  "Junior" : 三,
  "Senior" : 四,
  "Freshman" :一,
  "Sophomore" :二
 };

 return rank[element];
});

小提琴:


或许,假如rank是能够在其余处所有效的常质,则不妨在_.sortBy表白式以外界说它,并应用_.propertyOf以取得更具申明性的款式:

var rank = {
 "Junior" : 三,
 "Senior" : 四,
 "Freshman" :一,
 "Sophomore" :二
};

_.sortBy(["Junior","Senior","Freshman","Sophomore"], _.propertyOf(rank));

佳了闭于怎样将自界说排序运用于数组?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。