【问题标题】:Delete duplicated items in array Javascript / AngularJS删除数组Javascript / AngularJS中的重复项
【发布时间】:2017-05-01 23:50:16
【问题描述】:

我要搜索并删除重复项

[  
{  
  "id":"1",
  "rawId":"1",
  "displayName":"Asd",
  "name":{  
     "givenName":"Asd",
     "formatted":"Asd"
  },
  "nickname":null,
  "phoneNumbers":[  
     {  
        "id":"1",
        "pref":false,
        "value":"213213 414 86 86",
        "type":"mobile"
     }
  ],
  "emails":null
},
{  
  "id":"2",
  "rawId":"2",
  "displayName":"Bbb",
  "name":{  
     "givenName":"Bbb",
     "formatted":"Bbb"
  },
  "nickname":null,
  "phoneNumbers":[  
     {  
        "id":"3",
        "pref":false,
        "value":"565 65 65 123123",
        "type":"mobile"
     }
  ],
  "emails":null
},
{  
  "id":"3",
  "rawId":"3",
  "displayName":"Ccc",
  "name":{  
     "givenName":"Ccc",
     "formatted":"Ccc"
  },
  "nickname":null,
  "phoneNumbers":[  
     {  
        "id":"5",
        "pref":false,
        "value":"123 14 40 111",
        "type":"mobile"
     }
  ],
  "emails":null,
},
{  
  "id":"6",
  "rawId":"6",
  "displayName":"Nube",
  "name":{  
     "givenName":"Nube",
     "formatted":"Nube"
  },
  "nickname":null,
  "phoneNumbers":[  
     {  
        "id":"13",
        "pref":false,
        "value":"111 22 33",
        "type":"mobile"
     }
  ],
  "emails":null

},
{  
  "id":"8",
  "rawId":"6",
  "displayName":"Nube",
  "name":{  
     "givenName":"Nube",
     "formatted":"Nube"
  },
  "nickname":null,
  "phoneNumbers":[  
     {  
        "id":"13",
        "pref":false,
        "value":"111 22 33",
        "type":"mobile"
     }
  ],
  "emails":null

}
]

在此示例中,最后一项重复,我想在该对象数组中搜索“name.formatted”和“name.phoneNumbers[0].value”,删除一项,因为它们相同。

结果

enter code here

[  
{  
"id":"1",
"rawId":"1",
"displayName":"Asd",
"name":{  
 "givenName":"Asd",
 "formatted":"Asd"
},
"nickname":null,
"phoneNumbers":[  
 {  
    "id":"1",
    "pref":false,
    "value":"213213 414 86 86",
    "type":"mobile"
 }
],
"emails":null
},
{  
 "id":"2",
  "rawId":"2",
  "displayName":"Bbb",
 "name":{  
   "givenName":"Bbb",
   "formatted":"Bbb"
},
 "nickname":null,
 "phoneNumbers":[  
 {  
    "id":"3",
    "pref":false,
    "value":"565 65 65 123123",
    "type":"mobile"
 }
  ],
"emails":null
},
{  
 "id":"3",
 "rawId":"3",
 "displayName":"Ccc",
 "name":{  
 "givenName":"Ccc",
 "formatted":"Ccc"
},
"nickname":null,
"phoneNumbers":[  
 {  
    "id":"5",
    "pref":false,
    "value":"123 14 40 111",
    "type":"mobile"
 }
],
"emails":null,
},
{  
  "id":"6",
  "rawId":"6",
 "displayName":"Nube",
 "name":{  
   "givenName":"Nube",
   "formatted":"Nube"
},
   "nickname":null,
  "phoneNumbers":[  
 {  
    "id":"13",
    "pref":false,
    "value":"111 22 33",
    "type":"mobile"
 }
],
 "emails":null

}
]

一个“Nube”项目被删除。

认为在这个数组中将有大约 700 个对象和 40-60 个重复的项目(同名和同一个电话)。

有什么办法可以有效地做到这一点吗?

非常感谢

【问题讨论】:

  • “有什么办法可以有效地做到这一点吗?” 您尝试解决查询的不同javascript 方法的当前基准是什么?

标签: javascript angularjs sorting


【解决方案1】:

在下划线库 (http://underscorejs.org/#uniq) 处使用 uniq-function 和迭代函数。

var result = _.uniq(yourArray, function(item){

     return item.phoneNumbers && item.name.formatted

})

【讨论】:

  • 谢谢!不错的图书馆! :)
猜你喜欢
  • 1970-01-01
  • 2014-12-03
  • 2013-08-03
  • 2023-02-21
  • 2011-12-02
  • 2016-07-02
  • 2011-10-31
  • 2012-10-04
  • 2012-12-06
相关资源
最近更新 更多