V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
SKull4
V2EX  ›  问与答

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

  •  
  •   SKull4 · 2017-01-18 16:33:16 +08:00 · 1881 次点击
    这是一个创建于 2870 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如[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的值不是固定的,只知道有可能相同
    6 条回复    2017-01-19 11:48:52 +08:00
    wshcdr
        1
    wshcdr  
       2017-01-18 16:41:25 +08:00
    如果楼主使用 C++,则可用 multimap 来解决这问题
    SKull4
        2
    SKull4  
    OP
       2017-01-18 16:49:36 +08:00
    @wshcdr Swift....
    paradoxs
        3
    paradoxs  
       2017-01-18 16:51:00 +08:00
    放到 NSSet 里面 自动去重
    irenicus
        4
    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
        5
    misaka19000  
       2017-01-18 17:04:29 +08:00 via Android
    对 name 的值做一次排序,之后依次查找就可以了
    otakustay
        6
    otakustay  
       2017-01-19 11:48:52 +08:00
    这不是一个标准的 group 操作吗,搞个 Map<string, List<Model>>就行了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1659 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 16:48 · PVG 00:48 · LAX 08:48 · JFK 11:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.