我需要确定一个对象是否已经存在于 javascript 的数组中。
例如(虚拟代码):
var carBrands = [];
var car1 = {name:'ford'};
var car2 = {name:'lexus'};
var car3 = {name:'maserati'};
var car4 = {name:'ford'};
carBrands.push(car1);
carBrands.push(car2);
carBrands.push(car3);
carBrands.push(car4);
现在“carBrands”数组包含所有实例。
我现在正在寻找一个快速的解决方案来检查 car1、car2、car3 或 car4 的实例是否已经在 carBrands 数组中。
例如:
var contains = carBrands.Contains(car1); //<--- returns bool.
car1 和 car4 包含相同的数据,但它们是不同的实例,它们应该被测试为不相等。
我是否在创建时向对象添加了诸如哈希之类的东西?或者有没有更快的方法在 Javascript 中做到这一点。
我在这里寻找最快的解决方案,如果很脏,那么它必须是;)在我的应用程序中,它必须处理大约 10000 个实例。
没有jQuery
原文由 Caspar Kleijne 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用这样的东西:
在这种情况下,
containsObject(car4, carBrands)
为真。删除carBrands.push(car4);
调用,它将返回 false 。如果您稍后扩展为使用对象来存储这些其他汽车对象而不是使用数组,您可以使用类似这样的东西:这种方法也适用于数组,但是当用于数组时,它会比第一个选项慢一点。