2016-06-21 4 views
1

일부 배열을 포함하는 두 개의 JS 개체가 있습니다. 두 객체를 비교하고 세 번째 객체를 만들고 싶습니다. 배열은 secondObj만의 것입니다.배열을 포함하는 개체 비교

그들은 다음과 같이 :

firstObj : { 
    Jim_Array : [...], 
    Joe_Array : [...], 
    Bill_Array : [...] 
} 

secondObj : { 
    Bill_Array : [...], 
    Sam_Array : [...], 
    Kate_Array : [...], 
    Jim_Array : [...], 
    Joe_Array : [...] 
} 

나는 두 개체를 비교하고 다음과 같이 끝내고 싶습니다

thirdObj : { 
    Sam_Array : [...], 
    Kate_Array : [...] 
} 
+0

([자바 스크립트 배열 교차로 간단한 코드] 가능 중복 http://stackoverflow.com/questions/1885557/simplest -code-for-array-intersection-in-javascript) –

+0

위의 플래그는 내 실수였습니다. 무시하십시오. –

답변

2

당신은

var thirdObj = {}; 
for (var key in secondObj) { 
    if(!firstObj.hasOwnProperty(key)) { 
    // In case you need to compare the array additional check will come here 
    thirdObj[key] = secondObj[key]; 

    } 

} 
를 다음과 같이 뭔가를 시도 할 수 있습니다

다른 방법

var thirdObj = {}; 
for (var key in secondObj) { 
    if(firstObj[key] === undefined) { 
    // In case you need to compare the array additional check will come here 
    thirdObj[key] = secondObj[key]; 

    } 

} 
+1

첫 번째 옵션은 내가 작업 한 것과 매우 비슷하지만 더 좋습니다. 고마워, 고마워. – Daft

2

reduce()으로 Object.keys()을 사용할 수 있으며 새 오브젝트에 추가하지 않는 경우 firstObj의 속성이 secondObj가 hasOwnProperty()인지 확인하십시오.

1

용액

var firstObj = {Jim_Array : ['...'], Joe_Array : ['...'], Bill_Array : ['...']} 
 
var secondObj = {Bill_Array : ['...'], Sam_Array : ['...'], Kate_Array : ['...'], Jim_Array : ['...'], Joe_Array : ['...']} 
 

 
var result = Object.keys(secondObj).reduce(function(o, e) { 
 
    if(!firstObj.hasOwnProperty(e)) o[e] = secondObj[e]; 
 
    return o; 
 
}, {}); 
 

 
console.log(result)
사용 밑줄 :

var result = _.pick(secondObj, _.difference(_.keys(secondObj), _.keys(firstObj)));