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

how to check a literal object is in an Javascript array

本文关键字:是否 Javascript 数组 对象 文字 何检查 检查      更新时间:2023-09-26

我有一个数组和一个文字对象,如下所示

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

我想实现一个函数(例如:containsObject(e1, arr))在这种情况下应该返回 true。

请教我方法,不要像Array.prototype.indexof那样覆盖基类

试试这个:

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)

如果您不介意将它们字符串比较,请使用这种方式。JSON.stringify() 将对象转换为 json 字符串,我想您希望在人类视觉中比较它们,然后就是这样。

我不认为可以比较 2 个不同的对象.它们是来自 Object 的 2 个实例,

这可能会对你有所帮助

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

由于数组不包含任何方法,因此我们可以使用字符串来比较对象。

这可能会对您有所帮助。

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