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