自定义列表排序 [英] Custom List sorting

查看:164
本文介绍了自定义列表排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我有一个包含 [每日,每月,每周] [每月,每周,每日]元素的列表 [每周,每天]



我需要以这种方式对列表进行排序

  [每日,每月,每周] == [每日,每月,每周] 

[每日] == [每日,每月,每周]

[每周,每日] == [每日,每周]

有人可以帮我解决这个问题。



  customSorter = {
['daily','monthly','每周'] .indexOf(it)
}

assert ['daily','monthly','weekly'] .sort(customSorter)== ['daily','monthly' ,'weekly']
assert ['monthly','weekly','daily'] .sort(customSorter)== ['daily','monthly','weekly']
assert [''每周,每日'] .sort(customSorter)== ['daily','weekly']

或者你可以做到这一点(以避免反复创建一个列表)

  customSorter = {a,b,order = ['daily','每月','每周']  - > 
order.indexOf(a)< => order.indexOf(b)
}


Hi I have a list which contains elements [daily,monthly,weekly] or [monthly,weekly,daily] or [weekly,daily]

I need to sort the list in such a way that

[daily,monthly,weekly] == [daily,monthly,weekly]

[monthly, weekly, daily] == [daily, monthly, weekly]

[weekly, daily] == [daily, weekly]

Can some one please help me in this

解决方案

Assuming you mean that you have a list of Strings, then this should work:

customSorter = { 
  [ 'daily', 'monthly', 'weekly' ].indexOf( it )
}

assert [ 'daily', 'monthly', 'weekly' ].sort( customSorter ) == [ 'daily', 'monthly', 'weekly' ]
assert [ 'monthly', 'weekly', 'daily' ].sort( customSorter ) == [ 'daily', 'monthly', 'weekly' ]
assert [ 'weekly', 'daily' ].sort( customSorter ) == [ 'daily', 'weekly' ]

Or you could do this (to avoid repeatedly creating a List)

customSorter = { a, b, order=['daily','monthly','weekly'] ->
  order.indexOf( a ) <=> order.indexOf( b )
}

这篇关于自定义列表排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆