2017-03-08 10 views
1

2つのオブジェクトがあり、アンダースコアjsを使用して一意のデータのみを抽出します。2つのオブジェクトを比較して一意のデータのみを返します

オブジェクト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' 
    } 
    } 

最終結果は上書きから欠落しているデータのリストを返すべきです。

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

を、結果を見ることができます。 **アンダースコアのみで回答を希望される場合は、それを辞退して問題の必要な情報を追加してください。あなたが純粋なJSバージョンでうまくいけば、誰もこの投稿に答えることができないように重複を受け入れてください。 – Rajesh

答えて

2

マッチングとは整合性がない場合、これはobj1と解析してます。今、私はこれを持っているが、それはカスタムずにデフォルトのオブジェクトからすべてのデータを返すティル私たちの場合、それはcontactUs: "Contact Us"

を返す必要がありますobj2の値であれば、obj3に追加されます。あなたは、私が述べたポストは `underscore`を使用していない知っている...出力に

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

あなたの意見に同意してください、しかし、私はこれが灰色になる場所だと思います。あなたの答えは、dupeの答えがより一般的なこの状況に適しています。しかし、初心者にとっては、あなたの答えはより理にかなっていますが、経験豊富な読者にとっては、これはコンテンツを複製するようなものになります。人々が投票を選ぶ前にこの違いを考えてほしいと思っています。 – Rajesh

関連する問題