gpt4 book ai didi

javascript - 如何判断对象是否在数组中

转载 作者:IT老高 更新时间:2023-10-28 13:17:16 24 4
gpt4 key购买 nike

我需要确定一个对象是否已经存在于 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

最佳答案

使用这样的东西:

function containsObject(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
if (list[i] === obj) {
return true;
}
}

return false;
}

在这种情况下,containsObject(car4, carBrands) 为真。删除 carBrands.push(car4); 调用,它将返回 false。如果您稍后扩展为使用对象来存储这些其他汽车对象而不是使用数组,则可以使用类似这样的东西:

function containsObject(obj, list) {
var x;
for (x in list) {
if (list.hasOwnProperty(x) && list[x] === obj) {
return true;
}
}

return false;
}

这种方法也适用于数组,但在数组上使用时会比第一种方法慢一点。

关于javascript - 如何判断对象是否在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4587061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com