我有四个数组:
Data Example:= (Array 1 | Array 2 | Array 3 | Array 4)
R.E.M.|In Time: The Best Of R.E.M. 1988-2003|album:6G5BGhEiLvck3kvKpSYw2y|Rock
Nick Drake|Family Tree|album:2euLAROPTmXDIDuU3qVMkf|Folk
Sonic Youth|Dirty|album:0QPkL6ap8riBoQ5xN8YDR3|Noise Rock
我想对其中一个数组过滤的所有数组进行排序,例如数组1: Artist
。
我正在使用AutoIt编程,但答案可能是VBA / VBS / ASP,Java或C#。
答案 0 :(得分:1)
解决问题的面向对象方法是定义一个Album类型,其中包含与相册有关的所有4条信息,并且只有一个数组而不是4个数组。
然后,您可以根据需要定义相册的比较。这是C#中的一个例子(在Java中非常相似):
class Program {
static void Main(string[] args) {
Album[] albums = { new Album { artist = "potatotes",
family = "soup",
title = "a",
year=1546 },
new Album { artist = "etc",
family="blabla",
title="blablabla",
year = 1999 }
};
Array.Sort(albums);
}
}
class Album : IComparable<Album> {
public int CompareTo(Album y) {
return family.CompareTo(y.family);
}
public string title { get; set; }
public string artist { get; set; }
public int year { get; set; }
public string family { get; set; }
}
在这里,我们已经根据Album的家族实现了IComparable接口。一般的想法是将所有相关信息分组到一个类中,然后您可以根据其中一个字段定义该类对象的比较。
正如有些人可能指出的那样,有更灵活的方法可以在C#中实现这一点,但我希望尽可能简化和语言无关。
只要语言支持用户定义的结构,这应该可以复制,但我甚至不确定AutoIT是否支持。在这种情况下,您必须保留4个阵列,并实现自定义排序功能,对其中一个阵列进行排序,并同时在所有其他3个阵列上复制其交换操作。虽然这还有很多工作要做。
答案 1 :(得分:0)
我想对所有数组进行排序......
_ArraySort()
对结果数组进行排序。