Как сравнить массив и объект в Javascript? - PullRequest
0 голосов
/ 02 октября 2018

У меня есть два массива и объекта 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;

Пожалуйста, помогите мне решить эту проблему.Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Вам нужно два цикла:

  • итерация по 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());
0 голосов
/ 02 октября 2018

Вы можете выполнить фильтрацию, проверив имя с помощью 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...