gpt4 book ai didi

arrays - 从 Swift 中的第二个数组导入

转载 作者:行者123 更新时间:2023-11-28 07:13:06 25 4
gpt4 key购买 nike

我有 2 个数组,一个是主数组 (bookArray),另一个是更新列表 (stockBooksArray)。我使用下面的循环使用存在于两个数组中的唯一记录 (isbn) 将新数据导入 waster 数组。

有没有办法提高下面循环的性能?

更新数组可以包含与 master 不同的计数,有时多,有时少。

for i in 0...stockBooksArray.count {


let StockFiltered = stockBooksArray.filter{$0.isbn == bookArray[i].isbn}

if StockFiltered.count != 0 {

bookArray[i].stockAmount = StockFiltered[0].Stock
bookArray[i].unitCost = StockFiltered[0].Cost
bookArray[i].dues = StockFiltered[0].dues
bookArray[i].stockRRP = StockFiltered[0].RRP

}
}

谢谢,安东尼

最佳答案

是的。现在,您正在为每个 stockBooksArray 对象循环一次 bookArray 数组。这是非常糟糕的 O(N*M)。

相反,如果您可以按 ISBN 对两个数组进行排序,那么您可以同时遍历两个数组,只访问每个元素一次,这将是 O(N)。速度要快得多,即使包括对它们进行排序的时间也是如此。

我很快就把下面的代码放在一起了。它假定两个数组都按 isbn 排序。我认为您会发现这要快得多。

var j = 0
for book in stockBooksArray {
while bookArray[j].isbn < book.isbn && j < bookArray.count {
++j;
}
if j == bookArray.count {
break
}
else if bookArray[j].isbn == book.isbn {
bookArray[j].stockAmount = StockFiltered[0].Stock
bookArray[j].unitCost = StockFiltered[0].Cost
bookArray[j].dues = StockFiltered[0].dues
bookArray[j].stockRRP = StockFiltered[0].RRP
}
}

关于arrays - 从 Swift 中的第二个数组导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27630304/

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