2015-11-24 85 views
0

我得到了一個數組和地圖誰互相比較。但我有一個問題,如何檢查數組是否得到了地圖中的元素(或鍵)。當鑰匙不在陣列中時,他不應該做任何事情。數組應該決定「好吧..我不得到該元素。所以我刪除在地圖的關鍵是不再使用」陣列中的JS地圖元素

這裏是我的源代碼

for (var i = 0; i < array.length; i++) { 
 
       
 
    // check if map got array element 
 
    if (!self.map.has(array[i])) { 
 
    self.map.set(array[i]); 
 
    } 
 

 
    // right here i need your help 
 
    if (array.) {} 
 
}

+1

'Array.indexof'? –

+0

和/或'find'?和/或'findIndex'? (因爲我認爲'map'是一個'Map',所以你使用ES2015/ES6。) –

+0

@JuleVerne:我的回答對你有幫助嗎?如果是,請接受它。 –

回答

0

你應該這樣做也許。查找數組中不存在的所有鍵。然後迭代鍵並刪除它們。這對你有用嗎?

var keysNotPresentInArray= Array.from(map.keys()).filter(function(i,index){ 

     return myArray.indexOf(i)<0; 

    }); 

keysNotPresentInArray.forEach(function(i,index){ 

    map.delete(i); 
    }) 
+0

我喜歡你的想法,但地圖沒有過濾功能(?!),這是netbeans所說的......「TypeError:self.myMap.keys(...)。filter不是函數」 – JuleVerne

+0

你說得對。剛剛改變了答案,你現在檢查? –