鉴于清单:
list: [
object1: {
id: 22,
name: "Tom"
},
object2: {
id: 12,
name: "Mary"
},
object3: {
id: 44,
name: "Tom"
}
]
除了使用嵌套循环之外,是否有任何其他单行程序只能从此列表中获得重复的名称?因此,返回列表将是["Tom"]
答案 0 :(得分:2)
另一种方法是用计数对它们进行分组,找到计数大于1的所有数据:
var items = [Item]()
func updateCoinData(json : JSON) {
if let coinData = json[].arrayObject {
self.items = coinData as! [Item] //Thread 1: signal SIGABRT
}else {
print("cannot connect to the server")
}
self.tableView.reloadData()
}
答案 1 :(得分:1)
接近oneliner是以下代码。我们的想法是创建一个唯一命名元素的列表,并将其从原始列表中删除。
def list = [
[ id: 22, name: "Tom"],
[ id: 12, name: "Mary"],
[ id: 44, name: "Tom"]
]
def unique = list.toUnique { a, b -> a.name <=> b.name }
list.removeAll(unique)
list*.name
removeAll返回booleon,因此如果需要1行代码,则会使其复杂化,唯一变量可以跟随方法调用。
注意,.toUnique()返回一个新集合.unique()从被调用的集合中删除。