2017-08-17 69 views
-1

我有一個字符串數組,我從網上拉任何顏色分類: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" 
    } 
} 

我有一個例外:

fatal error: Index out of range

我知道我做的超出範圍的錯誤,但我無法弄清楚如何得到它把它放在我想要的順序。

如何循環訪問顏色數組,並將其中的任何元素都按照我想要的順序添加到新數組中?

回答

2

以下是一種可能的解決方案 - 根據實際顏色過濾主色列表。

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) } 
+0

感謝您的幫助!我會在15分鐘後嘗試並告訴你。 –

+0

按照你平常的ass!!有用 :) –