使用 lodash/underscore.js 从数组中获取对象属性和值
Get object properties and values from array using lodash/underscore.js
小提琴示例
我有一个这样的数组:
var array = [ {
'data-price': '0.00',
'data-term': '532',
'data-model_id': '409',
},
{
'data-price': '0.00',
'data-term': '483',
'data-model_id': '384',
},
{ text: 'dffdfddgfdgf' } ];
我想过滤掉最后一个对象并从前两个对象中提取[{data-model_id:409},{data-model_id:384}]
。我试过这段代码:
var k = _(array).filter('data-model_id').pluck('data-model_id').value();
console.log(k);
它只返回一个值的数组,["409", "384"]
.是否有一个函数可以在 lodash 或下划线中返回整个对象?
使用纯JS来显示逻辑:您需要filter
出没有键的元素,然后将新集合map
为另一种形式:
array.filter( function(item){
return 'data-model_id' in item;
}).map( function( item ){
return { 'data-model_id' : item['data-model_id'] }
});
http://jsfiddle.net/dn4tn6xv/7/
如果我告诉你这只使用原生 JavaScript 是可能的呢?只需使用 Array.filter
和 Object.keys
,使用前者进行过滤,后者获取密钥,然后通过比较返回的Array
索引来返回Boolean
Object.keys
var k = array.filter(function(obj){
return Object.keys(obj).indexOf("data-model_id") > -1;
});
在lodash
中,您可以这样做:
获取完整对象
console.log(_.filter(array, 'data-model_id'));
仅获取data-model_id
属性
var res = _.chain(array).filter('data-model_id').map(function (el) {
return _.pick(el, 'data-model_id');
}).value();
例
相关文章:
- 在node.js中使用JavaScript从JSON对象获取和设置文本内容
- 如何在JavaScript中基于事件对象获取文件名
- 使用Lodash从JSON对象获取特定于环境的配置
- 从每个父对象获取attr,并为每个子对象设置attr
- 使用javascript从json对象获取父名称
- 从express请求对象获取客户端MAC地址
- 正在从JSON对象获取数组
- 使用生成的键从对象获取数据
- 如何在 C# 中从 JavaScript 对象获取值
- JavaScript |对象:获取属性忍者移动
- 从 CasperJS 中的嵌套 JavaScript 对象获取值
- 从 JSON 对象获取数据时出现问题
- Angularjs 从范围对象获取值
- 以点表示法计算字符串,以从视图中的对象获取相应的值
- 如何测试从promise对象获取数据的控制器
- Javascript-在for循环上从var中的对象获取适当性
- 在javascript中从json对象获取数据
- 如何从每个对象获取jQuery的“title”和“url”值
- 从react routers browserHistory对象获取当前页面路径
- 从Javascript对象获取CSV值