首页 > 解决方案 > Rails:基于另一个数组对数组进行排序

问题描述

我想根据另一个数组在Ruby on Rails中对数组进行排序,但仍想在结果中保留第一个数组值:-

all_countries = ["Afghanistan", "Aland Islands", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antarctica", "Argentina", "Armenia", "Armenien", "Australia", ....,]


gcc = ["UAE", "Saudi Arabia", "Qatar", "Bahrain", "Kuwait", "Oman"] 

所需的输出

我想对所有国家/地区进行排序,但希望首先出现 GCC 国家(无排序 - 任何顺序),其余国家应出现在排序中(AZ)。

["UAE", "Saudi Arabia", "Qatar", "Bahrain", "Kuwait", "Oman", "Afghanistan", "Aland Islands", "Albania", "Algeria", "American Samoa" .....]

我可以通过以下方式做到这一点,但它似乎不是很好的代码,并且打破了非 gcc 国家的字母排序。

 countries.sort_by{|x| gcc.index(x) || gcc.size }

有什么更好的方法吗?

标签: ruby-on-railsarraysrubyrubygemsruby-on-rails-5

解决方案


gcc + (all_countries - gcc).sort

推荐阅读