2017-02-14 11 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"} 
] 

ArrayこのmainArrayに追加され、私は一度に複数の項目を削除する必要があります。

マイキー配列

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

私はmainArrayの整合性を維持するために、配列をデクリメントするループのために使用することにより"apple""banana"を削除しようとしています。私は可能な任意の助けを事前にI = 0

おかげ場合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) 
     } 
    } 
} 

私の問題が来ます。

+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);

関連する問題