2017-03-08 8 views
1

두 개체가 있고 밑줄 j를 사용하여 고유 한 데이터 만 추출하려고합니다.두 개체를 비교하여 고유 한 데이터 만 반환

개체 1 (기본)

{ 
    players: "Players: ", 
    tableLimit: "Table Limits:", 
    newCardBtn: "Add New Card", 
    existingCard: "Use existing one", 
    contactUs: "Contact Us", 
    test: { 
     table: 'test' 
    } 
} 

개체 2 (중복)

{ 
    players: "Players: ", 
    tableLimit: "Table Limits:", 
    newCardBtn: "Add New Card", 
    existingCard: "Use existing one", 
    test: { 
     table: 'test' 
    } 
    } 

최종 결과 덮어에서 누락 데이터 목록을 반환한다. 우리의 경우, 지금이이 때까지 contactUs: "Contact Us"

를 반환해야하지만 사용자 지정하지 않고 기본 객체의 모든 데이터를 반환 : 이것은으로 obj1 구문 분석

var def = { 
    players: "Players: ", 
    tableLimit: "Table Limits:", 
    newCardBtn: "Add New Card", 
    existingCard: "Use existing one", 
    contactUs: "Contact Us", 
    test: { 
     table: 'test' 
    } 
} 

var custom = { 
    players: "Players: ", 
    tableLimit: "Table Limits:", 
    newCardBtn: "Add New Card", 
    existingCard: "Use existing one", 
    test: { 
     table: 'test' 
    } 
} 

var out = JSON.stringify(Object.assign({}, def, custom)); 
fs.writeFile("./out.js", out); 
+0

내가 언급 알고 포스트는'underscore'를 사용하지 않는 ... 출력에 결과를 볼 수 있습니다. 대답이 ** ** 밑줄 만 ** 표시되도록하려면 거부하고 질문에 필요한 정보를 추가하십시오. 순수한 JS 버전을 사용해도 괜찮 으면 복제본을 받아 들여 다른 사람이이 게시물에 답변 할 수 없도록하십시오. – Rajesh

답변

2

과 일치하는 속성은 일치가없는 경우 obj2의 값이면 obj3에 추가됩니다. 당신은

var obj1 = { 
 
    players: "Players: ", 
 
    tableLimit: "Table Limits:", 
 
    newCardBtn: "Add New Card", 
 
    existingCard: "Use existing one", 
 
    contactUs: "Contact Us", 
 
}; 
 

 
var obj2 = { 
 
    players: "Players: ", 
 
    tableLimit: "Table Limits:", 
 
    newCardBtn: "Add New Card", 
 
    existingCard: "Use existing one", 
 
}; 
 
    
 
var obj3 = (function() { 
 
    result = {}; 
 
    for (var k in obj1) { 
 
    if (obj2[k] != obj1[k]) { 
 
     result[k] = obj1[k]; 
 
    } 
 
    } 
 
    return result; 
 
})(); 
 

 
console.log(obj3);

+0

그냥 순수한 js에서 차이가있는 함수를 제공하려는 경우이 코드를 중복으로 표시하는 것이 좋습니다. – Rajesh

+0

@Rajesh 당신이 중복으로 제안한 질문이 OP를 작동 솔루션으로 제공한다는 점에 동의하지만,이 간단한 시나리오에서는 엄청난 과잉이라고 할 수 있습니다. 내 대답은 당신이 복제물로 제안한 질문에 대한 일하고 관련성있는 대답이 될 수 없으므로 나는 당신이 링크 한 질문에 대한 대답보다 더 적합하다고 생각합니다. 나는 당신이 더 깊은 비교를 필요로하지 않는다면, 대부분의 사람들은 링크 된이 코드의 모습을 선호 할 것이라고 생각한다. – Archer

+1

귀하의 의견에 동의하지만, 이것이 일이 회색이되는 곳입니다. 속아 넘어가는 대답이 좀 더 일반적인 상황에 대한 대답은 적절합니다. 그러나 초보자의 경우 대답이 더 이해가되지만 경험 많은 독자는 콘텐츠를 복제하는 것과 같을 것이고 이것은 downvotes를 끌 수 있습니다. 사람들이 투표를하기 전에이 차이점을 고려하기를 바랍니다. – Rajesh