首页 > 解决方案 > 获取数组中的唯一项

问题描述

我有一个包含重复项目的数组,我只想获得唯一的项目,所以我这样做了:

    let decoded  = userDefaults.object(forKey: "shifts") as! Data
    myShifts = NSKeyedUnarchiver.unarchiveObject(with: decoded) as! [Shift]
    filtered_shifts = myShifts.filter{$0.regionName == region && $0.cityName == city && $0.idService == idservice && $0.quantityStaff != 0}
    for shift in filtered_shifts {
        let decoded4  = userDefaults.object(forKey: "nationalities") as! Data
        let decodedNationalities = NSKeyedUnarchiver.unarchiveObject(with: decoded4) as! [Nationality]
        for nationality in decodedNationalities {
            if nationality.id == shift.idNationality{
                nationalitiesid.append(nationality.id)
                nationalities.append(nationality.name)
            }
        }
    }
    uniqueNationality = Array(Set(nationalities))
    uniqueNationalityid = Array(Set(nationalitiesid))

这让我得到了一个新的数组,里面有我需要的独特物品......

问题是当我想要相同的订单时订单是不同的......例如:

国籍ID = [3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4]

国籍 = [“印度人”、“印度人”、“印度人”、“印度人”、“印度人”、“印度人”、“印度人”、“印度人”、“菲律宾人”、“菲律宾人”、“菲律宾人”、“菲律宾人” ]

唯一的数组是:

uniqueNationality = [“印度人”,“菲律宾人”]

uniqueNationalityid = [4, 3]

这是错误的,因为印度身份证是 3,菲律宾身份证是 4!

它应该是:

uniqueNationalityid = [3, 4]

如何解决这个问题?

标签: iosswift

解决方案


let uniqueList = nationalities.reduce([], {
    $0.contains($1) ? $0 : $0 + [$1]
})

推荐阅读