【问题标题】:Insert value at beginning of Joined separator array在连接分隔符数组的开头插入值
【发布时间】:2021-12-24 13:43:29
【问题描述】:

我正在尝试在数组中的备用位置插入一个值,并且它工作正常。现在我想先在 0 索引处插入值,而不是和我一样。

代码 sn-p-

var list = ["A","B","C","D"]
self.isAdLoaded = "true"
self.listData  = Array(self.list.map { [$0] }.joined(separator: [self.isAdLoaded]))

输出是-

["A","true","B","true","C","true","D"]

但我希望在 0 索引处为 true,如下所示-

["true","A","true","B","true","C","true","D"]

【问题讨论】:

    标签: arrays swift


    【解决方案1】:

    我相信你可以用 flatMap 来做到这一点……

    let list = [“a”, “b”, “c”]
    
    let other = list.flatMap { [“true”, $0] }
    

    这将返回一个“true”数组和值。然后 flat map 会将数组数组再次扁平化为字符串数组。

    话虽如此……我觉得通过为数据创建结构并以这种方式存储它会做得更好。感觉很像你在这个问题上做错了什么。

    如果你有这样的结构……

    struct Thing {
      let name: String
      var adLoaded: Bool = true
    }
    

    然后你可以做类似的事情......

    let data = list.map(Thing.init)
    

    您的结构数组中的所有布尔值都设置为 true。

    【讨论】:

      【解决方案2】:

      只需在数组中添加元素

      self.listData = [self.isAdLoaded] + Array(self.list.map { [$0] }.joined(separator: [self.isAdLoaded]))
      

      【讨论】:

      • 我不会这样做。它会起作用,但我觉得你走错了路。
      • @Fogmeister 一切都可以适合或不适合,这取决于他实际需要做什么。我同意他试图做的事情看起来很奇怪,但我只是回答了他的具体问题,否则我们应该留在这里讨论架构和其他我们无法真正知道的事情,除非他试图解释他正在解决的问题是什么
      猜你喜欢
      • 2013-11-06
      • 2021-08-18
      • 2018-09-15
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 2013-06-24
      • 2020-07-27
      • 2017-02-03
      相关资源
      最近更新 更多