Javascript 过滤对象数组的最佳方法

Javascript 过滤对象数组的最佳方法,javascript,arrays,Javascript,Arrays,我有一个对象数组,其中包含一个我要筛选的属性,名为“Country”。我让用户选择要查看的国家,并希望返回由该属性过滤的对象数组。完成这个过程最有效的方法是什么 var countries = [{GINI: 56.2, Country: "Central African Republic", Values: Array, Date: "2008"}, {GINI: 51.3, Country: "Brazil", Values: Array, Date: "2015"},{GINI:

我有一个对象数组,其中包含一个我要筛选的属性,名为“Country”。我让用户选择要查看的国家,并希望返回由该属性过滤的对象数组。完成这个过程最有效的方法是什么

  var countries = [{GINI: 56.2, Country: "Central African Republic", Values: Array, Date: "2008"},
  {GINI: 51.3, Country: "Brazil", Values: Array, Date: "2015"},{GINI: 51.1, Country: "Columbia", Values: Array, Date: "2015"}]


 var selectedCountries = ["Central African Republic", "Columbia"];

 var filteredCountries = countries.filter(country =>{

  ??  
 });

输出应该是包含匹配项的国家/地区数组的过滤版本

您可以使用检查对象的国家/地区是否在
选定的国家/地区

var国家=[{
基尼:56.2,
国家:“中非共和国”,
值:数组,
日期:“2008”
},
{
基尼:51.3,
国家:“巴西”,
值:数组,
日期:“2015年”
}, {
基尼:51.1,
国家:“哥伦比亚”,
值:数组,
日期:“2015年”
}
]
var selectedCountries=[“中非共和国”、“哥伦比亚”];
const filteredCountries=countries.filter(count=>selectedCountries.includes(count.Country))
console.log(filteredCountries)
您可以使用和

const countries=[{基尼:56.2,国家:“中非共和国”,数值:数组,日期:“2008”},{基尼:51.3,国家:“巴西”,数值:数组,日期:“2015”},{基尼:51.1,国家:“哥伦比亚”,数值:数组,日期:“2015”}]
const selectedCountries=[“中非共和国”、“哥伦比亚”];
const filteredCountries=countries.filter({Country})=>selectedCountries.includes(Country));
console.log(filteredCountries)
使用创建一个by
国家(O(n))。然后列出请求的国家(O(m)),并从地图中获取国家。复杂度为O(n+m)

const countries=[{GINI:56.2,国家:“中非共和国”,数值:[],日期:“2008”},{GINI:51.3,国家:“巴西”,数值:数组,日期:“2015”},{GINI:51.1,国家:“哥伦比亚”,数值:[],日期:“2015”};
const selectedCountries=[“中非共和国”、“哥伦比亚”];
const countryMap=countries.reduce((m,o)=>m.set(o.Country,o),新地图);
const filteredCountries=selectedCountries.map(c=>countryMap.get(c));

console.log(filteredCountries)您可以使用array.indexOf函数

var-countries=[{GINI:56.2,国家:“中非共和国”,值:数组,日期:“2008”},
{基尼:51.3,国家:“巴西”,数值:数组,日期:“2015”},{基尼:51.1,国家:“哥伦比亚”,数值:数组,日期:“2015”}]
var selectedCountries=[“中非共和国”、“哥伦比亚”];
var filteredCountries=countries.filter(country=>selectedCountries.indexOf(country.country)!=-1);

console.log(filteredCountries)
我不明白使用
selectedCountries
作为object@ShubhDixit然后,您可以根据密钥直接访问值。它的时间复杂度为
O(1)
,而在数组上它的时间复杂度为
O(n)
,只是为了记录,如果你能提供一些线索,它的时间复杂度如何?ShubhDixit JS objects使用散列你可以阅读这个答案这将很有帮助