如何以数组元素列表为键过滤Javascript或下划线中的对象
我分别有以下对象和数组如何以数组元素列表为键过滤Javascript或下划线中的对象,javascript,algorithm,underscore.js,Javascript,Algorithm,Underscore.js,我分别有以下对象和数组 cities = ['Berlin', 'Melbourne', 'Dallas'] population = { 'Amsterdam': 100, 'Berlin': 150, 'Cairo': 200, 'Jakarta': 300, 'Melbourne':350, 'Dallas': 400, 'Buenos Aires': 100} 我想根据数组中提到的城市过滤人口。输出如下所示 秩序无关紧要 编写最少代码的最佳方法是什么?尝试这样做 var filter
cities = ['Berlin', 'Melbourne', 'Dallas']
population = { 'Amsterdam': 100, 'Berlin': 150, 'Cairo': 200, 'Jakarta': 300, 'Melbourne':350, 'Dallas': 400, 'Buenos Aires': 100}
我想根据数组中提到的城市过滤人口。输出如下所示
秩序无关紧要
编写最少代码的最佳方法是什么?尝试这样做
var filterObj={};
cities.forEach(function(x){
filterObj[x]=population [x];
});
console.log(filterObj);
像这样试试
var filterObj={};
cities.forEach(function(x){
filterObj[x]=population [x];
});
console.log(filterObj);
您可以使用reduce()来避免“side var”:
您可以使用reduce()来避免“side var”:
刚找到这个uu.pick(人口,城市),;它就像一个符咒!谢谢大家!:-)刚找到这个uu.pick(人口,城市),;它就像一个符咒!谢谢大家!:-)
var cities = ['Berlin', 'Melbourne', 'Dallas'],
population = { 'Amsterdam': 100, 'Berlin': 150, 'Cairo': 200, 'Jakarta': 300, 'Melbourne':350, 'Dallas': 400, 'Buenos Aires': 100};
_.reduce(cities, function(a,b){ a[b]=population[b]; return a; },{});
// == {Berlin: 150, Melbourne: 350, Dallas: 400}
var filteredPopulation = _.object(
_(population)
.pairs()
.filter(function(v) { return cities.indexOf(v[0]) !== -1 })
)