2017-05-06 58 views
0

我在我的演示應用程序中有兩個數組。數組一個有內容的國家另一個是列表國家。所以,如果該國家不包含在國家陣列中,我想從國家陣列中移除國家。我已經把我下面的數組值,如何從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

[供-每遍在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陣列的國...

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

0

如果你正在尋找修改orig伊納勒數組,你可以這樣做:

forEach and `filter` would do the job. 
  1. 只是遍歷數組continent
  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);

相關問題