简体   繁体   English

如何检查文字对象是否在 Javascript 数组中

[英]how to check a literal object is in an Javascript array

I have an array & a literal object like this我有一个数组和一个像这样的文字对象

var arr = [{a: 1}, {a: 2}, {a: 3}];
var e1 = {a: 1};

I want to implement a function (ex: containsObject(e1, arr) ) what should return true in this case.我想实现一个函数(例如: containsObject(e1, arr) )在这种情况下应该返回 true 。

Please teach me the way without overriding base classes like Array.prototype.indexof请教我方法而不覆盖像Array.prototype.indexof这样的基类

Try this:尝试这个:

 var arr = [{a: 1}, {a: 2}, {a: 3}]; var e1 = {a: 1}; for (var i=0; i<arr.length; i++) { var found = true; for (var key in e1) { if (e1[key] != arr[i][key]) { found = false; break; } } if (found) { alert('found at index ' + i); break; } }

        var arr = [{a: 1}, {a: 2}, {a: 3}];
var e1 = {a: 1};
function containsObject(e1, arr) {
    var i;
    for (i = 0; i < arr.length; i++) {
        if (JSON.stringify(arr[i]) === JSON.stringify(e1)) {
            alert("we found it")
        }else{
            alert(JSON.stringify(e1)+"not equal to"+JSON.stringify(arr[i]))
        }
    }
}
containsObject(e1, arr)

if you don't mind compare them in string, use this way.如果您不介意在字符串中比较它们,请使用这种方式。 JSON.stringify() convert object to json string, I think you expect compare them in human vision, then that is it. JSON.stringify() 将对象转换为 json 字符串,我认为您希望在人类视觉中比较它们,就是这样。

I don't think the 2 different object can be compared.they are 2 instance from Object,我不认为可以比较 2 个不同的对象。它们是来自 Object 的 2 个实例,

This may Help you这可能会帮助你

function containsObject(e1, arr)
    {
      var k=false;
      ap=arr.filter(function(a){
      if(JSON.stringify(a) === JSON.stringify(e1))
      {k=true; 
       return(true);}
     });
    (k===true)?console.log("in array"):console.log("not in array");
    }
var arr = [{a: 1}, {a: 2}, {a: 3}];
var e1 = {a: 1};
containsObject(e1,arr);

Since array is not containing any method so we can use stringify to compare objects.由于数组不包含任何方法,因此我们可以使用 stringify 来比较对象。

This may help you.这可能对你有帮助。

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

    return false;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM