2017-05-06 17 views
0

デモアプリケーションに2つの配列があります。配列1には、コンテンツを持つ国があり、国別にリストされています。その国が国の配列に含まれていない場合は、配列1から国を削除したい。私は場合は...以下の私の配列値、Javascriptの別の配列値から配列値をフィルタリングする方法は?

var continent = [ 
    { 
     "continent":"Europe", 
     "country":["Albania", "Andorra", "UK", "Ireland"] 
    }, 
    { 
     "continent":"Asia", 
     "country":["Armenia", "Cambodia", "China", "Cyprus"] 
    } 
] 

var selectedCountries = ["Albania", "Andorra", "Armenia"]; 

出力

var result = [ 
    { 
     "continent":"Europe", 
     "country":["Albania", "Andorra"] 
    }, 
    { 
     "continent":"Asia", 
     "country":["Armenia"] 
    } 
] 
+0

[FOR-各JavaScriptでアレイ上?](の可能性のある重複http://stackoverflow.com/questions/9329446/for-each-over-an-array -in-javascript) – nyedidikeke

答えて

1
output=continent.map(continent=>{ 
    return { 
     country:continent.country.filter(country=>selectedCountries.find(c=>c===country)), 
     continent:continent.continent 
    }; 
}); 

は単にselectCountries配列でのcountrysをフィルタリング

http://jsbin.com/lagonukuni/edit?console

0

を入れていますあなたはオリジナルを変更することを見ているただ、continent以上の配列を反復

forEach and `filter` would do the job. 
  1. :inal配列は、あなたがこれを行うことができます。
  2. country配列を含むオブジェクトごとに、selectedCountriesコレクションに存在するオブジェクトを保持します。
    var continent = [ 
     
        { 
     
         "continent":"Europe", 
     
         "country":["Albania", "Andorra", "UK", "Ireland"] 
     
        }, 
     
        { 
     
         "continent":"Asia", 
     
         "country":["Armenia", "Cambodia", "China", "Cyprus"] 
     
        } 
     
    ]; 
     
    
     
    var selectedCountries = ["Albania", "Andorra", "Armenia"]; 
     
    
     
    continent.forEach(function (c,i) { 
     
        c.country = c.country.filter(function (v,i) { 
     
        return selectedCountries.includes(v); 
     
        }); 
     
    }); 
     
    console.log(continent);

関連する問題