【发布时间】:2017-12-29 14:59:55
【问题描述】:
我有一个对象数组,我想只返回基于对象 ID 的唯一对象。
我尝试在现有数组 data 中循环,然后查找该元素是否已添加到新创建的数组 arr 中,该数组应仅包含唯一值,但它不适用于我和我相信我在这里或那里遗漏了一些东西。
这是当前数组:
[
{
"objectId": "WMtwbyhFI6",
"cuisineNameEn": "Cafe",
"ordersNo": 20,
"hidden": false
},
{
"objectId": "QJSNTMpq5F",
"ordersNo": 24,
"cuisineNameEn": "Italian",
"hidden": false
},
{
"objectId": "iLXKswFRGa",
"ordersNo": 5,
"cuisineNameEn": "Japanese",
"hidden": true
},
{
"objectId": "Db0MeihpJE",
"ordersNo": 6,
"cuisineNameEn": "Fast Food",
"hidden": false
},
{
"objectId": "QJSNTMpq5F",
"ordersNo": 24,
"cuisineNameEn": "Italian",
"hidden": false
},
{
"objectId": "Db0MeihpJE",
"ordersNo": 6,
"cuisineNameEn": "Fast Food",
"hidden": false
},
{
"objectId": "Db0MeihpJE",
"ordersNo": 6,
"cuisineNameEn": "Fast Food",
"hidden": false,
},
{
"objectId": "Db0MeihpJE",
"ordersNo": 6,
"cuisineNameEn": "Fast Food",
"hidden": false
},
{
"objectId": "Db0MeihpJE",
"ordersNo": 6,
"cuisineNameEn": "Fast Food",
"hidden": false
},
{
"objectId": "Db0MeihpJE",
"ordersNo": 6,
"cuisineNameEn": "Fast Food",
"hidden": false
},
{
"objectId": "Db0MeihpJE",
"ordersNo": 6,
"cuisineNameEn": "Fast Food",
"hidden": false
}
]
但是,这是我想要返回的:
[
{
"objectId": "WMtwbyhFI6",
"cuisineNameEn": "Cafe",
"ordersNo": 20,
"hidden": false
},
{
"objectId": "iLXKswFRGa",
"ordersNo": 5,
"cuisineNameEn": "Japanese",
"hidden": true
},
{
"objectId": "Db0MeihpJE",
"ordersNo": 6,
"cuisineNameEn": "Fast Food",
"hidden": false
},
{
"objectId": "QJSNTMpq5F",
"ordersNo": 24,
"cuisineNameEn": "Italian",
"hidden": false
}
]
我尝试了以下方法:
var arr = [];
data.forEach((el)=>{
if (arr.indexOf(el.objectId) === -1) {
arr.push(el)
}
})
但是,它不起作用。
【问题讨论】:
-
@JanS 不是重复的,请仔细阅读帖子,我愿意返回一个完整的对象而不仅仅是一个元素!!!
-
@MathRobin 不是重复的我相信他想返回对象而不是元素。
-
indexOf()不会检查数组元素内的属性。它只能检查整个元素是否相等 -
@MichałPerłakowski 我不认为这是重复的,因为除了一个所有答案都在使用某个库
-
您要返回第一个还是最后一个找到的?
标签: javascript arrays