【问题标题】:Map Tuples to Array Swift将元组映射到数组 Swift
【发布时间】:2020-02-06 18:50:51
【问题描述】:

我有一个元组数组:

[(0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1)]

将其转换为 [0, 1, 0, 1.....] 的单个数组的最佳方法是什么?

我试过了

let newArray = tupleArray.map{$0.0, $0.1}

但它不起作用,它说连续的语句必须用;分隔。必须有一些巧妙的方法来减少它们。

【问题讨论】:

    标签: arrays swift tuples mapping


    【解决方案1】:

    您需要将这两个元素都添加到闭包中的数组中,还需要使用flatMap 而不是map 来展平map 将生成的嵌套数组。

    let arrayOfTuples = [(0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1)]
    let flattenedArray = arrayOfTuples.flatMap{ [$0.0, $0.1] }
    

    【讨论】:

      【解决方案2】:

      这将是你的答案:

      let arrTouple = [(0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1)] 
      let arr = arrTouple.flatMap{ [$0, $1] }
      
      print(arr) // [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
      

      【讨论】:

      • 我已经编译了这段代码,我得到了相同的答案
      【解决方案3】:

      只需使用 map(_:)flatMap(_:)tuples array 展平,

      let tuples = [(0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1)]
      let arr = tuples.map({ [$0.0, $0.1] }).flatMap({ $0 })
      

      输出:

      [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
      

      【讨论】:

      • 该代码仅输出原始数组并产生警告。
      • @DávidPásztor 更新了答案。出现复制粘贴错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      相关资源
      最近更新 更多