当前位置: 首页 > 面试题库 >

如何确定对象是否在数组中

庄瀚玥
2023-03-14
问题内容

我需要确定JavaScript中的数组中是否已存在对象。

例如(dummycode):

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;
}

这种方法也适用于数组,但是在数组上使用时,比第一种选择要慢一些。



 类似资料:
  • 问题内容: 有像isiterable这样的方法吗?到目前为止我找到的唯一解决办法就是打电话 但是我不确定这有多愚蠢。 问题答案: 检查是否可以处理序列类型,但是对于Python 2中的字符串可能会失败。我也想知道正确的答案,在此之前,这是一种可能性(也适用于字符串): 所述内置的检查的方法或串的情况下的方法。 另一种通用的pythonic方法是假定一个可迭代的对象,如果它不适用于给定的对象,则将优

  • 问题内容: 我需要使用AWS开发工具包检查文件是否存在。这是我在做什么: 它可以工作,但问题是当对象不存在时,回调(带有参数err和url)不会返回错误,并且当我尝试访问URL时,它会显示“ NoSuchObject”。 当对象不存在时,该方法是否应该返回错误对象?如何确定对象是否存在?我真的需要打电话给返回的URL吗? 问题答案: 在创建签名的URL之前,您需要检查文件是否直接从存储桶中存在。一

  • 问题内容: 如果我有rdd,我如何理解数据为key:value格式?有没有办法找到相同的东西-像type(object)告诉我对象的类型。我试过了,但这只是说。 假设我有一个类似的数据,我使用 和得到了。有没有一种方法可以将x和y定义 为键和值?还是键必须是单个值?我注意到,如果我使用和函数来获取数据,那么将这些数据定义为键值对变得容易得多 问题答案: Python是一种动态类型化的语言,PySp

  • 问题内容: 我有一个像这样的值: 给定,有没有一种很好的方法来测试是否包含? 问题答案: 警告:这不适用于图元数组(请参见注释)。 从开始,你现在可以使用。 要检查的阵列是否,或包含一个值使用或分别。 例

  • 问题内容: 如何确定在Java数组中是否包含特定值? 问题答案: 从java-8开始,你现在可以使用Streams。 要检查的阵列是否int,double或long包含一个值使用IntStream,DoubleStream或LongStream分别。 例 Java SE 9的简要更新 引用数组不好。对于这种情况,我们要紧紧追赶。从Java SE 9开始,我们有了。 “给出String,是否有测试V

  • 问题内容: 我有一个像 如何检查此数组以查看Magenic是否存在?除非必须,否则我不想循环播放。我正在处理几千条记录。 更新 由于这是一个受欢迎的帖子,所以我想分享一些新发现。看来@CAFxX已经分享了!我应该更经常阅读这些内容。 借助 ECMAScript 2015 ,使用新的箭头功能甚至更加简单: 问题答案: 2018 edit :这个答案来自2011,当时浏览器没有广泛支持数组过滤方法和箭