如何在Javascript或Undercore中以数组元素列表为键筛选对象
How to filter an Object in Javascript or Underscore with list of array elements as the key
我分别有以下对象和数组。
cities = ['Berlin', 'Melbourne', 'Dallas']
population = { 'Amsterdam': 100, 'Berlin': 150, 'Cairo': 200, 'Jakarta': 300, 'Melbourne':350, 'Dallas': 400, 'Buenos Aires': 100}
我想根据数组中提到的城市来过滤人口。输出如下所示。
订单无关紧要
filtered_population = {'Berlin': 150, 'Melbourne':350, 'Dallas': 400}
在编写最少代码的情况下,最好的方法是什么?
像这样尝试
var filterObj={};
cities.forEach(function(x){
filterObj[x]=population [x];
});
console.log(filterObj);
JSFIDDLE
您可以使用reduce()来避免"side-var":
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 })
)
相关文章:
- 在函数中添加数组元素的数值
- 访问JSON对象内部的数组元素
- Mongoose-在更新中删除数组元素
- javascript数组元素是否知道其封闭数组
- 将数组元素附加到FormData dos'不适用于Firefox 15
- 如何在javascript中使用click函数选择数组元素
- 如何在JavaScript中剥离数组元素中的非整数
- 消隐数组元素是否生成自己的属性
- 如何使一个Math.random数组元素比另一个数组元素更有可能被选中
- 在Codrops的内容中添加数组元素展开缩略图网格预览
- 如何使用Jquery水平打印表中的数组元素,并在某个元素之后垂直打印
- 如何访问数组中的数组元素(JavaScript)
- 生成ACF标记位置的数组(元素列表后缺少])
- validate.js验证数组元素
- JavaScript Unshift EACH 数组元素
- 如何在加号运算符之后选择数组元素的一部分
- 将文件转换为数组并使用数据列表和选项标签为自动完成文本框添加数组元素
- 如何在Javascript或Undercore中以数组元素列表为键筛选对象
- 检查元素是否具有在列表/数组中给定的类
- 如何将json数组元素映射到下拉列表中选择的选项