我想从String数组创建一个String数组的多维数组

时间:2015-09-08 12:26:40

标签: ios arrays swift

我有一个字符串数组,我想将内容分组三个来在数组中创建数组。

例如:

var arrayOfStrings = ["a0", "a1", a2", "b0", "b1", "b2"]

我希望实现:

var multiDimensionalArray = [["a0", "a1", a2"], ["b0", "b1", "b2"]]

因此,我正在寻找一个函数,可以按正确的顺序将arrayOfStrings中的元素分组到包含3个元素的数组中。

谢谢,

3 个答案:

答案 0 :(得分:1)

尝试此功能:

func makeMultidimensional(a: [String]) -> [[String]] {
    var result: [[String]] = []
    for var i = 0; i < a.count; i += 3 {
        result.append([a[i], a[i + 1], a[i + 2]])
    }
    return result
}

print(makeMultidimensional(arrayOfStrings)) // prints [["a0", "a1", "a2"], ["b0", "b1", "b2"]]

迭代字符串数组,每次向结果中添加3个项目的新数组。

答案 1 :(得分:0)

非常简单

NSArray *multiDimensionalArray = @[@[@"a0", @"a1", @"a2"], @[@"b0", @"b1", @"b2"]];

for swift

var multiDimensionalArray = [["a0", "a1", "a2"], ["b0", "b1", "b2"]];

在我的系统上运行

答案 2 :(得分:0)

func makeMultidimensional<T>(input:[T], dimensions:Int) -> [[T]]?
{
    if dimensions <= 0 || count(input) % dimensions > 0 {
        return nil
    }

    return
        input.reduce(([[T]](), [T]())) {
            if 0..<dimensions-1 ~= count($0.1) {
                return ($0.0, $0.1 + [$1])
            }
            else {
                return ($0.0 + [$0.1 + [$1]], [])
            }
        }.0
}