2017-02-14 32 views
0

首先感謝你給誰讀這整個問題。我無法編寫一個可以接受關鍵數組的函數,並使用索引從主數組中刪除項目。如何使用鍵陣列從主陣列中刪除特定項目?所有的

我的主陣列

var mainArray = [ 
    {fruit:"apple",color:"red"}, 
    {fruit:"orange",color:"orange"}, 
    {fruit:"banana",color:"yellow"}, 
    {fruit:"apple",color:"red"}, 
    {fruit:"banana",color:"yellow"}, 
    {fruit:"mango",color:"greenishyellowishred"} 
] 

項目的數組將被添加到該mainArray,我需要一次刪除多個項目。

我的鑰匙陣列

var keyArray = [{fruit:"apple",color:"red"}, {fruit:"banana",color:"yellow"}] 

我試圖用一個for循環遍歷數組遞減維護mainArray的完整性,除去"apple""banana"。當我想讀mainArray[i].fruit

for(var i = mainArray.length - 1; i > -1; i--) { 
    for(var j = keyArray.length - 1; j > -1; j--) {  
     if(mainArray[i].fruit === keyArray[j].fruit) { 
     mainArray.splice(i, 1) 
     keyArray.splice(j, 1) 
     } 
    } 
} 

我的問題涉及若i = 0

預先感謝任何可能的幫助。

+0

有在上面的代碼 – hackerrdave

+0

沒有遞歸是想法存在於'keyArray'任何水果對象必須從'mainArray'被刪除? – hackerrdave

+0

你的問題到底是什麼?你的代碼看起來工作得很好。 – Hamms

回答

0

var mainArray = [ 
 
    {fruit:"apple",color:"red"}, 
 
    {fruit:"orange",color:"orange"}, 
 
    {fruit:"banana",color:"yellow"}, 
 
    {fruit:"apple",color:"red"}, 
 
    {fruit:"banana",color:"yellow"}, 
 
    {fruit:"mango",color:"greenishyellowishred"} 
 
]; 
 
var keyArray = [{fruit:"apple",color:"red"}, {fruit:"banana",color:"yellow"}]; 
 
var tempArray = []; 
 
for(let j = 0; j < keyArray.length; j++) { 
 
    for(let i = 0; i < mainArray.length; i++) { 
 
    if(mainArray[i].fruit === keyArray[j].fruit) { 
 
     tempArray.push(mainArray[i]); 
 
    } 
 
    } 
 
} 
 
mainArray = mainArray.filter(function(el) { 
 
    return !tempArray.includes(el); 
 
}); 
 
console.log(mainArray);