数组去重题,怎样把属性的值相同的元素放到新的数组中去?

2017-01-18 16:33:16 +08:00
 SKull4
例如[modelA,modelB,modelC,modelD,modelE],元素有相同的属性 name ,有不同的值
modelA.name = "abc"
modelB.name = "efg"
modelC.name = "hij"
modelD.name = "abc"
modelE.name = "efg"

怎样把 modelA , modelD 放到一个数组, modelD 放到一个数组, modelE 和 modelB 放到一个数组,
如果原数组很大该怎么搞,name的值不是固定的,只知道有可能相同
1897 次点击
所在节点    问与答
6 条回复
wshcdr
2017-01-18 16:41:25 +08:00
如果楼主使用 C++,则可用 multimap 来解决这问题
SKull4
2017-01-18 16:49:36 +08:00
@wshcdr Swift....
paradoxs
2017-01-18 16:51:00 +08:00
放到 NSSet 里面 自动去重
irenicus
2017-01-18 17:01:14 +08:00
输入是一组键值对
modelA => abc
modelB => def
...

输出是一组键值对
abc => [modelA, modelD]
def => [modelB]
...

遍历输入,然后往输出的数据里面写

代码大概是:
foreach entry of input
push output{entry.value}, entry.key
done
display output

我只会用 perl ,估计写出来代码你不认识。。。所以写个伪码,还好理解点
misaka19000
2017-01-18 17:04:29 +08:00
对 name 的值做一次排序,之后依次查找就可以了
otakustay
2017-01-19 11:48:52 +08:00
这不是一个标准的 group 操作吗,搞个 Map<string, List<Model>>就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/335426

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX