SKull4
V2EX  ›  问与答

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

  •  
  •   SKull4 · Jan 18, 2017 · 2409 views
    This topic created in 3428 days ago, the information mentioned may be changed or developed.
    例如[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 replies    2017-01-19 11:48:52 +08:00
    wshcdr
        1
    wshcdr  
       Jan 18, 2017
    如果楼主使用 C++,则可用 multimap 来解决这问题
    SKull4
        2
    SKull4  
    OP
       Jan 18, 2017
    @wshcdr Swift....
    paradoxs
        3
    paradoxs  
       Jan 18, 2017
    放到 NSSet 里面 自动去重
    irenicus
        4
    irenicus  
       Jan 18, 2017
    输入是一组键值对
    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  
       Jan 18, 2017 via Android
    对 name 的值做一次排序,之后依次查找就可以了
    otakustay
        6
    otakustay  
       Jan 19, 2017
    这不是一个标准的 group 操作吗,搞个 Map<string, List<Model>>就行了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5911 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 06:13 · PVG 14:13 · LAX 23:13 · JFK 02:13
    ♥ Do have faith in what you're doing.