2016-04-29 9 views
0

私は、オブジェクトのオブジェクト(A)とオブジェクトの配列(B)の間のマッチングを試みています。オブジェクトのオブジェクトからオブジェクトの配列への値の一致を試みる

オブジェクトオブジェクト内の各オブジェクトにはPIDがあります。オブジェクトの配列内の各オブジェクトにはPIDがあります。私はAとBを一致させようとしているので、Aから職業を得て、Bの各オブジェクトに職業を追加することができます。したがって、私はPIDと職業を1つにしようとしています。これもできますか?

そうは、ここでAはどのように見えるかです:

{ 
    emp1: { 
    PID: 2430 
    Occupation: Welder 
    }, 
    emp2: { 
    PID: 432, 
    Occupation: Electrician 
    } 
} 

とB:

[ 
    { 
    PID: 432 
    }, 
    { 
    PID: 2430 
    } 
] 

これは簡単にlodashライブラリーのようなものを使用して行うことができますか?

+0

Aは無効なJSON形式 – Dalorzo

+2

@Dalorzoで、誰が 'bout json?その有効なJSオブジェクト – messerbill

+0

私はそれを申し訳ありません固定 – user1354934

答えて

1

非常に高価なBからA(または他の方法)の要素に一致させるには、ループ内でループを実行する必要があります。あなたはのは言わせ、の構造を変更することができればそれはあなたがこのようAのデータにアクセスすることができます

A = { 
    2430: { 
     name: "John", 
     occupation: "Welder" 
    }, 
    432: { 
     name: "John", 
     occupation: "Electrician" 
    } 
} 

次にA.、はるかに簡単だったでしょう:A[2430]

次に、あなたのコードは、次のようになります。

B = B.map(function(el) { 
    return { 
     PID: el.PID, 
     occupation: A[el.PID].occupation 
    } 
}); 
console.log(B); 

ループが1つだけです。また、将来的にはAのデータへのアクセスも非常に高速です。

+0

ありがとう!私にこれを撃つようにしましょう。 – user1354934

関連する問題