简体   繁体   English

如何在Swift 4中从两个不同的数组创建2D数组

[英]how to create 2D array from two different array in swift 4

I want to create one array from this one array that is 2d array 我想从这个二维数组创建一个数组

var array1 = [apples,oranges,grapes,vegetables,soups]
var arraylist = [[apples,oranges,grapes],[vegetables,soups]]

You can achieve this with simple loop though also, if you have only these 5 elements and you wants to separate them with code only. 如果您只有这5个元素,并且只想用代码分隔它们,则也可以通过简单的循环来实现。

var array1 = ["apples","oranges","grapes","vegetables","soups"]
var arraylist:[[String]] = [[String]]()

var innerArray: [String] = [String]()
var isFirstTime: Bool = true
for obj in array1 {
  if isFirstTime {
    innerArray.append(obj)
   if innerArray.count == 3 {
    arraylist.append(innerArray)
    innerArray.removeAll()
    isFirstTime = false 
  }
  } else {
    innerArray.append(obj)
    if innerArray.count == 2 {
    arraylist.append(innerArray)
    innerArray.removeAll()
  }
  }
}

print(arraylist) 打印(数组列表)

Results: [["apples", "oranges", "grapes"], ["vegetables", "soups"]] 结果:[[“苹果”,“橘子”,“葡萄”],[“蔬菜”,“汤”]]

What you have written is completely valid in Swift. 您编写的内容在Swift中是完全有效的。 Consider the following: 考虑以下:

let apples = "apples"
let oranges = "oranges"
let grapes = "grapes"
let vegetables = "vegetables"
let soups = "soups"

var array1 = [apples, oranges, grapes, vegetables, soups]
var arraylist = [[apples, oranges, grapes], [vegetables, soups]]

Now adding types these two are: 现在添加这两种类型:

var array1: [String] = [apples, oranges, grapes, vegetables, soups]
var arraylist: [[String]] = [[apples, oranges, grapes], [vegetables, soups]]

In general you can create groups which define how your array should be split. 通常,您可以创建定义数组拆分方式的组。 Check the following: 检查以下内容:

// Constants
let apples = "apples"
let oranges = "oranges"
let grapes = "grapes"
let vegetables = "vegetables"
let soups = "soups"

// Groups of items
let groups: [[String]] = {
    let fruits: [String] = [apples, oranges, grapes]
    let misc: [String] = [vegetables, soups]
    return [fruits, misc]
}()

// Array to seperate by group
let inputArray: [String] = [apples, oranges, grapes, vegetables, soups]

// Array of arrays of items per group. Outputs [["apples", "oranges", "grapes"], ["vegetables", "soups"]]
let grouppedArray: [[String]] = {
    return groups.compactMap { group in
        let filteredArray = inputArray.filter { group.contains($0) }
        return filteredArray.isEmpty ? nil : filteredArray
    }
}()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM