【发布时间】:2018-07-18 05:49:35
【问题描述】:
我有一个对象数组,比如
[
{
"name": "Name 1",
"id": "1245"
},
{
"name": "Name 2",
"id": "9788"
},
{
"name": "Name 3",
"id": "5694"
},
{
"name": "Name 4",
"id": "4523"
},
{
"name": "Name 5",
"id": "4567"
}
]
我需要检查数组是否包含具有 ID 的对象(比如说“1111”)。如果在数组内的任何对象中都没有找到 ID,则将新对象(例如,{"name":"Test 0","id":"1111"})放在数组的开头。
PS:除了array.unshift(newObj),还有其他方法可以达到目的吗?
编辑:好的。我确实尝试过使用 array.indexOf(),但它似乎只适用于值而不是对象。我也尝试循环遍历数组,但也没有用。我不能使用 ES6。
【问题讨论】:
-
我得到 -1 是为了什么?
-
我没有对你投反对票,但这可能是因为缺乏自己的研究。这里已经有一个类似的问题:stackoverflow.com/questions/22844560/… 虽然它使用的是 ES6 的一部分
Array.prototype.some(因此对您不可用),但您始终可以实现 polyfill。 -
..同样,
unshift替代品(例如[newObj].concat(array))也是如此。在这里讨论:stackoverflow.com/questions/6195729/… unshift 应该是最快的。 -
@IvanSivak 你是说不能用 ES5 完成吗?
-
我找到了@IvanSivak 在 cmets 中提到的解决方案。
标签: javascript arrays object ecmascript-5