【问题标题】:How to compare array and object in Javascript?如何在Javascript中比较数组和对象?
【发布时间】:2018-10-02 14:46:24
【问题描述】:

我有两个 json 数组和对象 我想比较两个 json 并推送另一个对象

obj1 = ["user1", "user2"]
obj2 = [
  {
    "userName": "user1", 
    "id": "14" 
  },
  {
    "userName": "user2",
    "id": "9",
  },
  {
    "userName": "user3",
    "id": "3",
  },
  {
    "userName": "user4",
    "id": "1",
  }
]

我想得到如下结果

[
  {
    "userName": "user1",
    "id": "14"
  },
  {
    "userName": "user2",
    "id": "9",
  }
]

之后,我尝试比较两个数组并得到我需要的结果。

var obj1 = ["user1","user2"]
var obj2 = [
  {
    "userName": "user1",
    "id": "14"
  },
  {
    "userName": "user2",
    "id": "9",
  },
  {
    "userName": "user3",
    "id": "3",
  },
  {
    "userName": "user4",
    "id": "1",
  }
]

var objArray = [];
for (var i = 0; i < obj.length; i++) {
if (obj1[i] === obj2.userName) {
  objArray.push(obj2[i]);
}
return objArray;

请帮我解决问题。 提前致谢

【问题讨论】:

    标签: javascript arrays object compare


    【解决方案1】:

    您可以通过使用Array#includes 检查名称进行过滤。

    var array1 = ["user1", "user2"],
        array2 = [{ userName: "user1", id: "14" }, { userName: "user2", id: "9", }, { userName: "user3", id: "3", }, { userName: "user4", id: "1", }],
        result = array2.filter(({ userName }) => array1.includes(userName));
      
    console.log(result);

    【讨论】:

      【解决方案2】:

      你需要两个循环:

      • 遍历obj1[i],并为obj1的每个索引...
        • 遍历obj2[] 并测试每个对象以查看username 属性的值是否等于obj[i] 的值。

       var obj1 =  ["user1","user2"]
       var obj2 = [
        {  
          "userName": "user1", 
         "id": "14" 
        },
       {
      
         "userName": "user2",  
          "id": "9",    
       },
       {
      
          "userName": "user3",    
          "id": "3",
        },
      {
      
          "userName": "user4",    
         "id": "1",
       }] 
      
      function myFunction(){
        var objArray = [];
        for (var i=0; i < obj1.length; i++) {
          for (var userIndex=0; userIndex < obj2.length; userIndex++){
            if (obj1[i] === obj2[userIndex].userName){
             objArray.push( obj2[userIndex] );
            }
          }
        }
        return objArray;
      };
      
      console.log(myFunction());

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多