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

标签 ios arrays swift sorting

<分区>

我有一组从网上提取的各种颜色的字符串:

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"
  }
}

我有一个异常(exception):

fatal error: Index out of range

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

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

最佳答案

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

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

关于ios - Swift iOS - 如何按特定顺序对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743221/

相关文章:

ios - 为什么滑动手势识别器会 swift 出错?

javascript - 如何将数组绑定(bind)到 arrystore 以便在 extjs 中填充组合

ruby - 为什么 Ruby 允许我在其自身上推送数组?

php - 如何在数组组中找到最常见的 n 个元素

ios - 模态关闭后,键盘显示错误的颜色 - iOS

ios - UIView 子类,触摸事件

ios - iOS 上的 polymer 点击重新路由

ios - NSJSONSerialization 上的 exc_bad_instruction

ios - 如果我们通过 BLE 向同一设备发送多个连接请求会怎样?

swift - Alamofire 忽略 timeoutIntervalForRequest 和 timeoutIntervalForResource 参数