javascript - 如何检查对象是否在逻辑上位于数组中,JavaScript

标签 javascript jquery arrays

我需要检查一个对象是否在逻辑上在数组中,当两个对象在逻辑上相等时(就像Java中的equals),它将被视为“在”数组中

当我使用 jQuery$.inArray 测试下面的代码时,它返回 -1,表示复制的一个不被视为“在”数组中。

var a =[{value: "G27", title: "G27"}];
$.inArray({value: "G27", title: "G27"},a); //returns -1

以上只是一个例子,generic有没有简单的方法来实现

最佳答案

解决方法是检查 for 循环中的每个键值对:

function exist(arr, obj){
  var len = Object.keys(obj).length;
  var count = 0;
  for(var i=0;i<arr.length;i++){
      count=0;
      for(var key in obj){
          if(obj[key] == arr[i][key]){
            count++;
          }
      }
      if(count == len && count == Object.keys(arr[i]).length){
        console.log("Exists!!");
        return;
      }
  }
  console.log("Don't exist!!");
}

var arr =[{value: "G27", title: "G27"}];
var b = {value: "G27", title: "G27"};
//Call
exist(arr, b);

关于javascript - 如何检查对象是否在逻辑上位于数组中,JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30369559/

相关文章:

java - 从 RPN 转换为 Infix 时无法检测 2 位数字

javascript - 将对象转换为映射数组?

javascript - Angular 指令 link() 函数接收不一致的范围

jQuery iFrame 拖动不起作用

javascript - jquery close() 不起作用

jquery - 自动完成以显示焦点上的所有选项。如何?

c - 如何从客户端(用 C 编写)接收 int 数组到服务器(用 python 编写)

javascript - 通过查找值 AngularJS 在数组中添加键

foreach 循环内的 Javascript .match 和 .test

javascript - 将数组绑定(bind)到状态时出错