简体   繁体   中英

How to compare array and object in Javascript?

I have two json array and object I would like to compare two json and push another object

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

I would like to get the result as below

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

After, I tried to compare two arrays and get a result what I need.

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;

Please help me to solve the issue. Thanks in advance

You could filter by checking the name with 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); 

You need two loops:

  • iterate through obj1[i] , and for each index of obj1 ...
    • iterate through obj2[] and test each object to see whether the username property's value equals that of 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()); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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