gpt4 book ai didi

arrays - 快速保持数组顺序,同时填充它

转载 作者:行者123 更新时间:2023-11-30 11:40:37 27 4
gpt4 key购买 nike

因此,我有一个名为 allBusinesses 的二维数组,其类型为 BusinessClass。我用以下方式填充这个数组:

allBusinesses[0].append(contentsOf: [B11, B12, B13, B14, B15, B16])
allBusinesses[1].append(contentsOf: [B21, B22, B23, B24, B25, B26])

其中 B11B12 ... B26 都是 BusinessClass 实例。

我有另一个名为 myOwnedBusinesses 的二维 BusinessClass 数组。我通过以下方式创建它:

var myOwnedBusinesses: [[BusinessClass]] = [[], []]

在我的应用程序中,我有一个 tableView,其中包含 allBusinesses 的所有元素,其中每个部分都包含数组第二维的行,因此:所有企业[节][行]。当我在 tableView 中选择随机单元格时,相应的 BusinessClass 元素将按以下方式添加到 myOwnedBusinesses 数组中:

myOwnedBusinesses[selectedSection].append(allBusinesses[selectedSection][selectedRow])

从代码中可以想象,如果我选择第 0 部分第 3 行的单元格,然后选择第 0 部分第 2 行的单元格,myOwnedBusinesses 的顺序将是错误的,与 allBusinesses 相反。总之,我希望在两个数组之间保持相同的顺序,即使 myOwnedBusinesses 数组并不总是被填充。

最佳答案

这是我的解决方案

let section0 = ["a", "b", "c", "d", "e", "f"]
let section1 = ["h", "i", "j", "k", "l", "m"]
section0.index(of: "b")
var all:[[String]] = [[],[]]
all[0].append(contentsOf: section0)
all[1].append(contentsOf: section1)

保持原始索引压平原始数组

let all_flat = all.flatMap {$0}

假设用户按以下顺序选择单元格:“d”、“e”、“a”、“h”、“m”和“k”。

var myArray = [["d", "e", "a"], ["h", "m", "k"]]

然后对myArray内的每个数组进行排序

myArray = myArray.map {
$0.sorted { str1, str2 in
return all_flat.index(of: str1)! < all_flat.index(of: str2)!
}
}

对于您的情况:

let allBusinesses_flat = allBusinesses.flatMap {$0}
myOwnedBusinesses = myOwnedBusinesses.map {
$0.sorted { b1, b2 in
return all_flat.index(of: b1)! < all_flat.index(of: b2)!
}
}

这个解决方案在内存方面非常昂贵。最好存储选定的索引。

关于arrays - 快速保持数组顺序,同时填充它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49329851/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com