2017-11-07 20 views
-2

내가 말하는 두 개의 배열은 객체로 채워져 있고, 여러 속성을 갖고 있으며, 같은 키를 가지고있다.Javascript (JS)를 사용하여 두 개의 개별 배열에서 두 객체 값을 비교하는 방법은 무엇입니까?

 var array1 = [ 
      {name: "Jim", city: 'Toronto', id:'1281732'}, 
      {name: "Alex", city: 'New York', id:'32423'}, 
      {name: "Simon", city: 'San Francisco', id:'234234'}, 
      {name: "Jake", city: 'Milwaukee', id:'1282342341732'} 
     ] 

     var array2 = [ 
      {name: "Joey", city: 'Raleigh'}, 
      {name: "Alex", city: 'New York'}, 
      {name: "Lee", city: 'San Diego'}, 
      {name: "Jake", city: 'Milwaukee'} 
     ] 

array1의 두 번째 및 네 번째 개체가 이름과 도시를 비교하여 array2에서도 발견된다는 것을 어떻게 알 수 있습니까? 두 객체 키가 일치해야 함을 의미하고, array1에서 복사 된 객체를 가져 와서 새 배열로 푸시합니다.

로다시 또는 밑줄과 같은 것을 사용할 수 있습니다.

+1

을 사용할 수 있습니다 그것을하기 위해. 이것은 서비스 플랫폼으로서의 코딩이 아닙니다. – WilomGfx

+1

예 @WilomGfx에 동의합니다. 중첩 루프는 먼저 시도 할 수있는 힌트입니다. –

답변

1

모든 프로그래밍 작업에서와 마찬가지로 문제를 생각하고 이해하는 솔루션을 생각해내는 것입니다. 이 경우 첫 번째 배열의 각 항목에 대해 두 번째 배열을 검색하는 작업은 첫 번째 배열을 반복하고 매 반복마다 일치 항목이 발견 될 때까지 두 번째 배열을 반복 처리하여 수행 할 수 있습니다.

var array1 = [ 
 
    {name: "Jim", city: 'Toronto', id:'1281732'}, 
 
    {name: "Alex", city: 'New York', id:'32423'}, 
 
    {name: "Simon", city: 'San Francisco', id:'234234'}, 
 
    {name: "Jake", city: 'Milwaukee', id:'1282342341732'} 
 
] 
 

 
var array2 = [ 
 
    {name: "Joey", city: 'Raleigh'}, 
 
    {name: "Alex", city: 'New York'}, 
 
    {name: "Lee", city: 'San Diego'}, 
 
    {name: "Jake", city: 'Milwaukee'} 
 
] 
 

 
var result = []; 
 

 
for (var i = 0; i < array1.length; i++) { 
 
    for (var j = 0; j < array2.length; j++) { 
 
    if (array1[i].name == array2[j].name && 
 
     array1[i].city == array2[j].city) { 
 
     result.push(array1[i]); 
 
     break; 
 
    } 
 
    } 
 
} 
 

 
console.log(result);


현대 구문은 몇 가지를 정리합니다.

두 배열에있는 결과를 얻기 위해

var array1 = [ 
 
    {name: "Jim", city: 'Toronto', id:'1281732'}, 
 
    {name: "Alex", city: 'New York', id:'32423'}, 
 
    {name: "Simon", city: 'San Francisco', id:'234234'}, 
 
    {name: "Jake", city: 'Milwaukee', id:'1282342341732'} 
 
] 
 

 
var array2 = [ 
 
    {name: "Joey", city: 'Raleigh'}, 
 
    {name: "Alex", city: 'New York'}, 
 
    {name: "Lee", city: 'San Diego'}, 
 
    {name: "Jake", city: 'Milwaukee'} 
 
] 
 

 
var result = array1.filter(({name, city}) => 
 
    array2.some(o => o.name == name && o.city == city) 
 
); 
 

 
console.log(result);

1

당신은 또한 간단하게하는 방법을 요청하기 전에 해결책을 시도해보십시오 filter() 기능

var array1 = [ 
 
      {name: "Jim", city: 'Toronto', id:'1281732'}, 
 
      {name: "Alex", city: 'New York', id:'32423'}, 
 
      {name: "Simon", city: 'San Francisco', id:'234234'}, 
 
      {name: "Jake", city: 'Milwaukee', id:'1282342341732'} 
 
     ] 
 

 
     var array2 = [ 
 
      {name: "Joey", city: 'Raleigh'}, 
 
      {name: "Alex", city: 'New York'}, 
 
      {name: "Lee", city: 'San Diego'}, 
 
      {name: "Jake", city: 'Milwaukee'} 
 
     ] 
 
     
 
var array3 = array1.filter(row1 => array2.filter(row2 => row1.name == row2.name && row1.city == row2.city).length > 0); 
 

 
console.log(array3);