为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

隔江千里 2019-12-21 11:28:24
我需要确定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包含相同的数据,但是是不同的实例,应该测试它们是否相等。我是否在创建时向对象添加了像哈希这样的东西?还是有更快的方法来执行此操作。我正在这里寻找最快的解决方案,如果它很脏,那么它必须是;)在我的应用程序中,它必须处理大约10000个实例。没有jQuery
查看完整描述

3 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

使用这样的东西:


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;

}

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


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 359 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信