【问题标题】:Swift iOS -How To Sort An Array In A Specific Order? [duplicate]Swift iOS - 如何按特定顺序对数组进行排序? [复制]
【发布时间】:2017-08-17 19:10:36
【问题描述】:

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

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

我遇到了一个异常:

致命错误:索引超出范围

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

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

【问题讨论】:

    标签: ios arrays swift sorting


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的帮助!我会在 15 分钟内试一试,然后告诉你。
    • 按照你平时的帮助!它有效:)
    猜你喜欢
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多