高效Swift数组比较

问题描述 投票:0回答:1
struct Area {
var name: String
var isSelected: Bool
}

我有两个列表:

  • 列表一:它具有区域的完整列表。
  • 列表二:它具有用户选择的列表一的区域的子集(但未设置所选状态)

我想做的是创建一个新的区域列表,其中包含两个列表中的项目,但是如果列表一中的元素在列表二中,我想将isSelected属性更新为true。

我写了当前方法,但它有缺陷且效率低下:

private func didGetCurrentUserSession(_ usersAreas: [Area]?, allAreas: [Area]){
        guard let usersAreas = usersAreas else {return}
        var newAreasList = [Area]()
        for area in allAreas {
            for userArea in usersAreas {
                if userArea.name == area.name {
                    newAreasList.append(Area(name: area.name, isSelected: true))
                    break
                }
            }
            newAreasList.append(Area(name: area.name, isSelected: false))
        }

        _loadingAreas.onNext(false)
        _areas.onNext(newAreasList)
    }

对此将提供任何帮助,我们将不胜感激。宁愿使用非常迅速的方法来完成此任务。

arrays swift performance processing-efficiency
1个回答
0
投票

两种选择:对两个数组都进行排序,或者将其中一个变成字典以快速查找。无论您做什么,都将其转换为通用方法。

© www.soinside.com 2019 - 2024. All rights reserved.