2015-01-07 45 views
1

Fiddle Example获得从阵列对象的属性和值/ 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或下划线中的所有对象?

回答

4

使用纯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/

3

如果我告诉过你,这只使用原生javascript是可能的?只需使用Array.filterObject.keys,使用前过滤和后者拿到钥匙,然后通过比较返回的Array的索引返回Boolean通过Object.keys

var k = array.filter(function(obj){ 
    return Object.keys(obj).indexOf("data-model_id") > -1; 
}); 
2

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(); 

Example