Swift iOS - 如何按特定顺序对数组进行排序?



我有一个字符串数组,我从网上提取了各种颜色:

var colors = ["red", "green", "yellow", "blue", "purple"]

但它也可能是:

//this time less colors
var colors = ["yellow", "red", "purple"]

无论它们以哪种方式进入,我都想对颜色数组进行排序并将它们添加到新数组中,我希望新数组具有以下顺序:

//the way I want the new array to have it's elements
["red", "purple", "pink", "yellow", "brown", "blue", "orange", "green"]

我试过了:

var newArr:[String] = []
for color in colors{
if color == "red"{
newArr[0] = "red"
}
if color == "purple"{
newArr[1] = "purple"
}
if color == "pink"{
newArr[2] = "pink"
}
if color == "yellow"{
newArr[3] = "yellow"
}
if color == "brown"{
newArr[4] = "brown"
}
if color == "blue"{
newArr[5] = "blue"
}
if color == "orange"{
newArr[6] = "orange"
}
if color == "green"{
newArr[7] = "green"
}
}

我有一个例外:

致命错误:索引超出范围

我知道我在哪里犯了超出范围的错误,但我无法弄清楚如何让它按照我想要的顺序排列。

如何遍历颜色数组并获取其中的任何元素,并按我想要的顺序将它们添加到新数组中?

这是一个可能的解决方案 - 根据您实际拥有的颜色过滤颜色的主列表。

let masterColors = ["red", "purple", "pink", "yellow", "brown", "blue", "orange", "green"]
var colors = ["yellow", "red", "purple"] // whatever colors you have
var newArr = masterColors.filter { colors.contains($0) }

最新更新