使用 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);
它 return 只是一个值数组 ["409", "384"]
。是否有 return lodash 或下划线中的整个对象的功能?
如果我告诉您仅使用本机 javascript 就可以实现呢?就用Array.filter
和Object.keys
,前者过滤,后者获取key,然后比较Array
的索引返回一个Boolean
12=]
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();
用普通的JS来展示逻辑:你需要filter
出没有key的元素,然后map
新的集合到另一种形式:
array.filter( function(item){
return 'data-model_id' in item;
}).map( function( item ){
return { 'data-model_id' : item['data-model_id'] }
});
我有一个这样的数组:
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);
它 return 只是一个值数组 ["409", "384"]
。是否有 return lodash 或下划线中的整个对象的功能?
如果我告诉您仅使用本机 javascript 就可以实现呢?就用Array.filter
和Object.keys
,前者过滤,后者获取key,然后比较Array
的索引返回一个Boolean
12=]
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();
用普通的JS来展示逻辑:你需要filter
出没有key的元素,然后map
新的集合到另一种形式:
array.filter( function(item){
return 'data-model_id' in item;
}).map( function( item ){
return { 'data-model_id' : item['data-model_id'] }
});