使用函数式编程过滤文字对象
Filtering literal object using functional programming
我想知道这个问题是否有一个函数式编程方法。我有一个文字对象和一些键:
var obj= {'a':20, 'b':44, 'c':70};
var keys = ['a','c'];
我想要得到:
{'a':20', 'c':70}
但是没有for循环。我试着:
_.object(keys, ._map(keys, function(key){return obj[key];}))
给出结果,但看起来很复杂…
既然您使用underscore.js
,请尝试_.pick()
方法,这是专门为此实现的:
var obj = {
'a': 20,
'b': 44,
'c': 70
};
var keys = ['a', 'c'];
console.log( _.pick(obj, keys) );
// Object {a: 20, c: 70}
<script src="http://underscorejs.org/underscore-min.js"></script>
您可以使用.reduce()
:
var extracted = keys.reduce(function(o, k) {
o[k] = obj[k];
return o;
}, {});
.reduce()
方法(在其他一些语言中称为"inject"或"fold")遍历数组的值。每个参数都与作为第二个参数传递的初始值一起传递给函数。该函数对每个数组项执行所需的操作,并返回要在下一次迭代时传递的值。
相关文章:
- 有可能过滤来自嵌入式YouTube的声音吗
- 添加文字和评论功能更新Div
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 如何计算对象文字中的键
- I'我想放下画布上的文字.帮帮我
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- 对象文字方法上的Javascript绑定不起作用
- Angular:使用选择列表选择过滤代码中的对象
- 以ECMAScript 5及更高版本为目标时,八进制文字不可用
- 在单击时过滤 JSON
- 如何在BookshelfJS中通过加入来过滤结果
- ES6 模板文字是否比 eval 更安全
- 如何使用javascript过滤复杂的json对象
- 如何应用带过滤器的ng if来过滤记录,并在同一页面中显示两个不同的视图
- 是索引数组文字的好做法
- 过滤AngularJs中的数据
- 通过API调用过滤数据
- 从多行文字中获取第一个修剪的字符串
- 使用angularjs内置过滤器过滤代码中的特定属性
- 使用函数式编程过滤文字对象