【发布时间】:2022-08-11 23:13:33
【问题描述】:
有两个数组 - 第一个是关于日期的,第二个显示当天的支出:
var arrayOfDates = [01.07, 01.07, 03.07, 04.07, 05.07, 05.07, 05.07]
var arrayofCosts = [3, 8, 2, 2, 8, 6, 9]
我想过滤 arrayOfDates 的独特元素。在第二个数组中显示每天的最高价值支出。
所以结果应该是:
var arrayOfDatesModifed = [01.07, 3.07, 04.07, 05.07]
var arrayofNumbersModifed = [8, 2, 2, 9]
所以这个想法包括三个阶段:
- 过滤
arrayOfDates以获取唯一元素 - 对于每个唯一的日期,在
arrayofCosts中查找相应的项目 - 在
arrayofCosts中查找每个日期的最大值尽管这些任务中的每一项都可能很简单,但我无法弄清楚如何完全完成它们。您的帮助将不胜感激
-
首先,您不应该有 2 个数组,而应该只有一个。使用自定义
struct,或在最小值时使用元组/字典:如struct MyStruct { let cost: Int, let Date: Date }。对于您的问题,您可以zip()链接它们,然后删除“重复项”,保持最高值。 -
拉尔姆,谢谢你的帮助!我在这里写了整个任务的简化版本。对于项目的其他目的,imo,使用数组更容易。对于这个特定的任务,我可以将它们合并到字典中。但是,如果可以有针对数组的解决方案,那就太好了。
-
一组自定义结构(或字典)将是更好的方法。而你正是在这种情况下:你有“链接”具有相同索引的值,但如果你删除/修改/更改其中一个位置,你需要对另一个数组应用相同的计算相同的索引。因此,排序、过滤变得更加困难。这是可行的,但有很多额外的工作。现在,如果您有超过 2 个数组(即每个属性一个数组,您将看到噩梦)。
-
知道了谢谢!我会尝试构建字典或结构。
-
使用结构数组。这是迄今为止最干净的解决方案。如果您必须使用另一个数组的内容过滤一个数组,请像 Sh_Khan\'s answer 中那样使用 zip 。
标签: ios arrays swift xcode filter