【发布时间】:2016-03-03 02:02:07
【问题描述】:
我在一个数组中有以下对象:
let john = ["name": "John", "Age" : "10", "Gender" : "Male", "City" : "SF"]
let peter = ["name" : "peter", "Age" : "12", "Gender" : "Male", "City" : "NY"]
let mary = ["name" : "mary", "Age" : "14", "Gender" : "Female", "City" : "TX"]
let bob = ["name" : "bob", "Age" : "10", "Gender": "Male" , "City" : "FL"]
var objArray = [john, john, peter, john, peter, mary, mary, bob, john, mary, peter, mary]
objArray 由 (4) john, (3) peter, (4) mary, (1) bob 组成
如果我能得到如下的字典数组将是理想的:
[["qty": 4, "obj": john],
["qty": 3, "obj": peter],
["qty": 4, "obj": mary],
["qty": 1, "obj": bob]]
我尝试过的:
var copyOfObjArray = objArray
var newArray = [[:]]
for obj in objArray{
let name = obj["name"]
let age = obj["age"]
print(name)
var i = 0
for copiedObj in copyOfObjArray{
if copiedObj["name"] == name && copiedObj["age"] == age {
i++
}
}
let newDict = ["qty" : i, "obj" : obj]
//I am not sure how to remove all the objects that are similar
let index = copyOfObjArray.indexesOf(obj)
newArray.append(newDict)
}
问题:有没有更好的方法来使用简单的高阶函数来完成此任务?如果是这样,代码示例会很棒
【问题讨论】: