Arrays 在Swift中对2个链接数组排序?

Arrays 在Swift中对2个链接数组排序?,arrays,swift,sorting,Arrays,Swift,Sorting,我想对一个数组进行排序,并将顺序更改“镜像”到相同维度的另一个数组 问题与此类似,但适用于Swift语言: 例如: let arr1 = ["a", "b", "c", "d", "e"] let arr2 = [1, 5, 9, 2, 3] ... //sort //result == ["a", "d", "e", "b", c"] 近似解我知道: for i in stride(from 0, to: arr2.count - 1, by: 1) { for j in stride

我想对一个数组进行排序,并将顺序更改“镜像”到相同维度的另一个数组

问题与此类似,但适用于Swift语言:

例如:

let arr1 = ["a", "b", "c", "d", "e"]
let arr2 = [1, 5, 9, 2, 3]
... //sort
//result == ["a", "d", "e", "b", c"]
近似解我知道:

for i in stride(from 0, to: arr2.count - 1, by: 1) {
  for j in stride(from i + 1, to: arr2.count, by: 1) {
    if arr2[i] > arr2[j] {
      ...//swap arr2[i] and arr2[j]
      ...//swap arr1[i] and arr1[j]
    }
  }
}
但是,他们为在Swift中高级处理阵列增加了许多额外的可能性。那么,是否可以使用内部Swift功能简化此解决方案

注:
arr1
arr2
作为单独的数组给出

已编辑

对。你发现了类似的问题,但它们的标题很糟糕,不能反映作者需要的答案。换句话说,如果你删除/关闭我的问题,人们可能会继续问它,因为它是不可能找到与现有的标题

  • zip
    将阵列放在一起
  • 按数组2排序
    新数组
  • 将数组映射到数组1

    let arr1 = ["a", "b", "c", "d", "e"]
    let arr2 = [1, 5, 9, 2, 3]
    
    let result = zip(arr1, arr2) // [("a", 1), ("b", 5), ("c", 9), ("d", 2), ("e", 3)]
                    .sorted(by: {$0.1 < $1.1}) // [("a", 1), ("d", 2), ("e", 3), ("b", 5), ("c", 9)]
                    .map{ $0.0 } // ["a", "d", "e", "b", "c"]
    
    让arr1=[“a”、“b”、“c”、“d”、“e”]
    设arr2=[1,5,9,2,3]
    让结果=zip(arr1,arr2)/[(“a”,1),(“b”,5),(“c”,9),(“d”,2),(“e”,3)]
    。排序(按:{$0.1<$1.1})/[($a,1),($d,2),($e,3),($b,5),($c,9)]
    .map{$0.0}/[“a”、“d”、“e”、“b”、“c”]
    
      • zip
        将阵列放在一起
      • 按数组2排序
        新数组
      • 将数组映射到数组1

        let arr1 = ["a", "b", "c", "d", "e"]
        let arr2 = [1, 5, 9, 2, 3]
        
        let result = zip(arr1, arr2) // [("a", 1), ("b", 5), ("c", 9), ("d", 2), ("e", 3)]
                        .sorted(by: {$0.1 < $1.1}) // [("a", 1), ("d", 2), ("e", 3), ("b", 5), ("c", 9)]
                        .map{ $0.0 } // ["a", "d", "e", "b", "c"]
        
        让arr1=[“a”、“b”、“c”、“d”、“e”]
        设arr2=[1,5,9,2,3]
        让结果=zip(arr1,arr2)/[(“a”,1),(“b”,5),(“c”,9),(“d”,2),(“e”,3)]
        。排序(按:{$0.1<$1.1})/[($a,1),($d,2),($e,3),($b,5),($c,9)]
        .map{$0.0}/[“a”、“d”、“e”、“b”、“c”]
        

      正确的解决方案是只使用一个阵列。定义一个
      struct
      并将数据正确地保存在一起。@staticVoidMan是的,他们要求相同的东西。但与此同时,他们并没有清楚地回答他们的问题(在你的链接中还有一个重复的问题)<代码>基于数组排序数组
      听起来像是两个具有类似继承关系的数组<代码>2链接数组
      更清晰,因为这些数组没有明确的关系,更容易找到我的标题-我知道你计划关闭并删除我的问题没有计划删除你的问题。它将作为副本保持关闭状态。这很好,对你没有任何负面影响。由于标题更好,搜索人员可能会遇到您的问题。他们将在这里看到答案,以及副本及其所有答案的链接。人人共赢。正确的解决方案是只使用一个阵列。定义一个
      struct
      并将数据正确地保存在一起。@staticVoidMan是的,他们要求相同的东西。但与此同时,他们并没有清楚地回答他们的问题(在你的链接中还有一个重复的问题)<代码>基于数组排序数组听起来像是两个具有类似继承关系的数组<代码>2链接数组更清晰,因为这些数组没有明确的关系,更容易找到我的标题-我知道你计划关闭并删除我的问题没有计划删除你的问题。它将作为副本保持关闭状态。这很好,对你没有任何负面影响。由于标题更好,搜索人员可能会遇到您的问题。他们将在这里看到答案,以及副本及其所有答案的链接。为大家赢,谢谢。我唯一的问题是,是否可以通过名称而不是数字来修复代码以访问元组?您可以使用完整的语法,其中缩写
      $0/$1
      由参数标签表示。使用“代码完成”,然后按封口占位符上的
      return
      。谢谢。我唯一的问题是,是否可以通过名称而不是数字来修复代码以访问元组?您可以使用完整的语法,其中缩写
      $0/$1
      由参数标签表示。使用“代码完成”,然后按封口占位符上的
      return