2015-01-07 124 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