【问题标题】:Sort multiple arrays based on an ID array根据一个 ID 数组对多个数组进行排序
【发布时间】:2015-04-05 17:18:05
【问题描述】:

到目前为止,我得到的基本上是 2 个单独构建的数组,其内容如下:

数组组 #1:

var nickName = ['Noah', 'Liam', 'Jacob', 'Mason', 'William',];
var lastLogin = ['03042015', '02042015', '02042015', '05032015', '16022015'];
var id = [0001, 0002, 0003, 0004, 0005];

数组组 #2:

var banStatus= [0, 0, 2, 1, 0];
var status = ['Online', 'Busy', 'Snooze', 'Offline', 'Offline'];
var id = [0003, 0005, 0001, 0004, 0002];

我想做的是根据他们都得到的“id”数组对它们进行排序,(但遗憾的是它们的顺序错误)。

结果应该是这样的:

id[0] == 0001
nickName[0] == Noah
lastLogin[0] == 03042015
isBanned[0] = 2
status[0] = Snooze

【问题讨论】:

    标签: c# arrays sorting indexing


    【解决方案1】:

    另一个答案:

    定义一个包含数组中所有属性的类:

    class MyClass
    {
         int Id;
         string nickName;
         ...
    }
    

    用这些对象填充一个列表,形成你的数组。对此列表进行排序。

    【讨论】:

      【解决方案2】:

      创建一个包含两个元素元组的列表。第一个元素:Id 数组,第二个元素:整数 0 .. 数组的长度。

      List<Tuple<int,int>> arraySortHelperList = new List<Tuple<int,int>>();
      for(...)
      {
           int id = ...
           arraySortHelperList.Add(new Tuple<int,int>(id, n++));
      }
      

      根据 Id 元素对该列表进行排序。

      现在第二个元素是排序的索引,即排序列表中的第一项将在其第二个元素中包含首先出现的数组槽的索引。

      【讨论】:

        猜你喜欢
        • 2016-06-02
        • 2013-11-10
        • 1970-01-01
        • 1970-01-01
        • 2021-08-18
        • 2015-06-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多