2016-07-29 60 views
0

我有兩個地圖名爲maps1和list1,我如何比較它們的對象,如果對象相同,maps1的關鍵字是javascript中的list1關鍵字。比較兩個地圖並在javascript中添加一個地圖的關鍵字

我知道,在地圖中添加值,代碼編寫

map1[anykey] = value; 

如果MAP1包含{hi , hello}, {a, b}, {c, d} 和列表1中包含[hi, a],我想最後做類似這樣的一個MAP2:{hi, hello}, {a, b}。這是否可能?

+1

當你說「地圖」上面,我你猜你的意思是「對象」。同樣,當你說上面的「列表」時,我猜你的意思是「數組」。 (請注意,從ES2015開始,JavaScript有'Map'類型,因此最好具體說明您正在使用的內容。) –

+0

*「如果map1包含'{hi,hello},{a,b},{c, d}'「* - 這不是一個真正有效的JS對象格式。你的意思是'[你好:「你好」},{a:「b」},{c:「d」}]'(即'maps1'是一個對象數組),或者......? – nnnnnn

+0

對於令人困惑的解釋感到抱歉,@nnnnnn在說什麼是我想要做的 –

回答

2

只需創建一個新的空白地圖對象,通過列表陣列循環,並複製了他們的名字都在它的任何屬性:

// Create the blank object 
var newObject = Object.create(null); // Or just {} if you prefer 

// Loop through the array 
list.forEach(function(name) { 
    // Does the original object have a property by this name? 
    if (name in originalObject) { 
     // Yes, copy its value over 
     newObject[name] = originalObject[name]; 
    } 
});