Chcę połączyć tablice, ale połączenie, które chcę, jest następujące: Chcę, aby elementy Arrays zostały połączone. Na przykład chcę utworzyć nową tablicę, łącząc pierwszy element ImageBannerLogo z pierwszym elementem ImageBannerLogo1 i pierwszym elementem ImageBannerLogo2.

    var ımageBannerLogo = [String]()
    var ımageBannerLogo1 = [String]()
    var ımageBannerLogo2 = [String]()
    var ımageBannerLogoAll = [String]()

override func viewDidLoad() {
        super.viewDidLoad()
ımageBannerLogo.append("one", "two", "three")
ımageBannerLogo1.append("1", "2", "3")
ımageBannerLogo2.append("4", "5", "6")

ımageBannerLogoAll.append(ımageBannerLogo+ ımageBannerLogo1+ ımageBannerLogo2)
}

Chcę, aby jego dane wyjściowe wyglądały następująco: ımageBannerLogoAll = "one14", "two25", "three36"

1
hellobeko 31 marzec 2020, 16:10

3 odpowiedzi

Najlepsza odpowiedź
var ımageBannerLogo = ["one", "two", "three"]
var ımageBannerLogo1 = ["1", "2", "3"]
var ımageBannerLogo2 = ["4", "5", "6"]
var ımageBannerLogoAll = [String]()

Po prostu wykonaj iterację i sformatuj ciąg

    func loopIT() {
       //Include this check to avoid crash - array index out if range 
       guard ımageBannerLogo.count == ımageBannerLogo1.count && ımageBannerLogo.count == ımageBannerLogo2.count else { return }

       for i in 0..<ımageBannerLogo.count {
            ımageBannerLogoAll.append(String(format: "%@%@%@", ımageBannerLogo[i], ımageBannerLogo1[i], ımageBannerLogo2[i]))
       }

       print(ımageBannerLogoAll)
       //["one14", "two25", "three36"]
      }
1
Catherine 31 marzec 2020, 13:38

Musisz w ten sposób dołączyć sekwencję do tablicy. (Zobacz append (contentOf :) doc)

ımageBannerLogo.append(contentsOf: ["one", "two", "three"])
ımageBannerLogo1.append(contentsOf: ["1", "2", "3"])
ımageBannerLogo2.append(contentsOf: ["4", "5", "6"])

Następnie możesz połączyć je razem za pomocą pętli for w ten sposób.

for i in 0..<ımageBannerLogo.count {
    ımageBannerLogoAll.append(ımageBannerLogo[i] + ımageBannerLogo1[i] + ımageBannerLogo2[i])
}

Lub użyj zip i map w ten sposób.

ımageBannerLogoAll += zip(zip(ımageBannerLogo, ımageBannerLogo1), ımageBannerLogo2).map { $0.0 + $0.1 + $1 }
1
Kentaro Okuda 31 marzec 2020, 14:03
    var ımageBannerLogo:[String] = ["one", "two", "three"]
    var ımageBannerLogo1:[String] = ["1", "2", "3"]
    var ımageBannerLogo2 :[String] = ["4", "5", "6"]
    var ımageBannerLogoAll:[String] = []


for i in 0..<ımageBannerLogo.count{
    ımageBannerLogoAll.append("\(ımageBannerLogo[i])\(ımageBannerLogo1[i])\(ımageBannerLogo2[i])")
}


print(ımageBannerLogoAll)
//Result : ["one14", "two25", "three36"]
1
Dilan 31 marzec 2020, 13:30