приведение данных из массива al oop в 2d - PullRequest
0 голосов
/ 02 мая 2020

У меня есть массив данных для выборки из firebase, я делаю для l oop, чтобы перебрать данные, чтобы сохранить их в 2d массиве с 3 элементами для каждого раздела, например: [["1","2","3"],["4","5","6"],["7","8","9"]]

Как добавить в массив и сохранить его в виде двумерного массива, как показано выше, с 3 элементами в каждом индексе массива?

@State var array2d: [[]] 

    ForEach(Networking.forSalePosts){i in
//don't know how to append it here :)
}

Спасибо

1 Ответ

0 голосов
/ 03 мая 2020

Предполагая, что forSalePosts является 1d-массивом String с, вот как вы можете добиться этого, используя reduce, функцию более высокого порядка:

@State var array2d: [[String]] = []

array2d = Networking.forSalePosts.reduce(array2d) { previous, current in
    guard let last = previous.last else { 
        // first iteration, array2d is empty
        return [[current]] 
    }

    if last.count == 3 {
        // start new group
        return previous + [[current]]
    } else {
        // add to existing group
        return previous.dropLast() + [last + [current]]
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...