[英]Remove empty properties / falsy values from Object with 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}]
两个对象中提取[{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'] }
});
如果我告诉您仅使用本机javascript怎么办? 只需使用Array.filter
和Object.keys
,使用前者进行过滤,而后者获取键,然后通过比较Object.keys
返回的Array
的索引来返回Boolean
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.