Ios Swift:筛选数组的最佳方法

Ios Swift:筛选数组的最佳方法,ios,arrays,swift,Ios,Arrays,Swift,我有一个包含student对象的数组和另一个包含goodStrudentId的数组。我需要按照goodStrudentId的顺序从students数组中获取所有student对象。 使用多重forloop我可以解决这个问题,但我想学习解决这个问题的最佳方法。我唯一的问题是遵循好的顺序。 下面是一个示例代码,可以理解我的问题- class Student { var s_id : String var s_name : String init(i: String, n: S

我有一个包含student对象的数组和另一个包含goodStrudentId的数组。我需要按照goodStrudentId的顺序从students数组中获取所有student对象。 使用多重forloop我可以解决这个问题,但我想学习解决这个问题的最佳方法。我唯一的问题是遵循好的顺序。 下面是一个示例代码,可以理解我的问题-

class Student {
    var s_id : String
    var s_name : String
    init(i: String, n: String) {
        self.s_id = i;
        self.s_name = n;
    }
}

var students = [Student(i: "1",n: "a"),
                Student(i: "2",n: "b"),
                Student(i: "3",n: "c"),
                Student(i: "4",n: "d"),
                Student(i: "5",n: "e")]

var goodStudentsId = ["5","2"]

var goodStudentObject = getGoodStudentObjectUsingId(students:students, gdStudentsId:goodStudentsId)



/*
 Expected answer:
 var goodStudentObject = [Student(i: "5",n: "e"), Student(i: "2",n: "b")]

 */

func getGoodStudentObjectUsingId(students:Array<Student>, gdStudentsId:Array<String>) -> Array<Student>! {
    /*?????? please complete this func*/
    return [];
}

阵列具有过滤功能;在谷歌搜索这个问题后,这一点应该很清楚。你尝试了什么?这个网站是一个关于高阶swift功能教育的好资源:我尝试了NSPredicate。我将尝试以下答案。。“不知道为什么我投了反对票,”康诺内维尔说,“我坚持顺序。这就是为什么我在这里提出这个问题的最佳方式是什么?最短代码?容易理解的代码?最快的代码,这将取决于数组的大小和其他一些参数?这将返回学生在原始数组中的顺序。根据问题中的预期输出,我假设结果应该根据gdStudentsId中的id排序。我当然可能错了。你能帮我提供客观的c代码吗?我用swift试过了。正如预期的那样,它的顺序是错误的
func getGoodStudentObjectUsingId(students:[Student], gdStudentsId:[String]) -> [Student] {
    return students.filter {
        gdStudentsId.contains($0.s_id)
    }
}