【问题标题】:map filter in Array数组中的映射过滤器
【发布时间】:2017-11-13 17:23:49
【问题描述】:

在过滤数组方面需要帮助。

let array = [pair: "TZS_SFDT", pair: "TZFD_TG", pair: "G_TDDD"]

如何将两个对象中的字母组分开,例如:

arraySeperated1 = [part1: "TZS", part1:"TZFD", part1: "G"]
arraySeperated2 = [part2: "SFDT", part2: "TG", part2: "TDDD"] 

感谢您的帮助!

【问题讨论】:

  • 这些都是Dictionaries 不是数组。
  • 在 Swift 中,[:] 语法用于字典,字典只能有唯一的键。所以pair: 不能被声明两次或更多。 part1:也一样,不能多次返回。
  • 所以,我需要帮助过滤字典。
  • 好的,我只是想让它更容易。我的数组看起来像这样:
  • edit您的问题,不要在cmets中发布代码。也请使用tour 并查看help center。谢谢。

标签: arrays swift filter


【解决方案1】:

我能用你的非法代码做的最好的事情(致命错误:字典文字包含重复的键)是改为将其查看/解释为字符串数组:

let array = ["TZS_SFDT", "TZFD_TG", "G_TDDD"]

然后拆分它:

let arraySeparated1 = array.map { $0.substring(to: $0.range(of: "_")!.lowerBound) }
let arraySeparated2 = array.map { $0.substring(from: $0.range(of: "_")!.upperBound) }

好的,经过评论澄清后,您实际上得到了:

let array = [[pair: "TZS_SFDT", description: "", Value: 0],
             [pair: "TZFD_TG", description: "", Value: 0],
             [pair: "G_TDDD", description: "", Value: 0]]

所以你拆分为:

let arraySeparated1 = array.map { ["part1":$0.pair.substring(to: $0.pair.range(of: "_")!.lowerBound)] }
let arraySeparated2 = array.map { ["part2":$0.pair.substring(from: $0.pair.range(of: "_")!.upperBound)] }

【讨论】:

  • 非常感谢!这正是我想要的。最后剩下的问题是,pair-values 仍然包含引号。像对:"\"TZS_SFDT\""。有没有办法“额外消除引号?
  • 我知道,这是我的来源的问题。但在这个过程中也能解决这个问题。
  • Cœur:为什么它是非法的?安迪:你原来的问题已经回答了。为什么不接受这个并提出一个关于裁剪字符串的新问题。
  • @Mozahler 我已经添加了原始代码在 Swift 中非法的原因:致命错误:字典文字包含重复键
猜你喜欢
  • 2021-08-26
  • 1970-01-01
  • 2020-03-17
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 2019-04-17
  • 2017-04-28
  • 2014-07-23
相关资源
最近更新 更多