2015-09-22 157 views
1
var values = [ 
    { 
    'props': { 
     'name': 'a' 
    } 
    }, 
    { 
    'props': { 
     'name': 'b' 
    } 
    }, 
    { 
    'props': { 
     'name': 'c' 
    } 
    } 
] 

var order = ['c', 'b', 'a'] 

訂購數組對象我如何可以重新排列values基礎的props.name值是order基於特定道具排列順序

回答

4

鏈接indexBy()at(),爲您提供了簡明易讀代碼:

_(values) 
    .indexBy('props.name') 
    .at(order) 
    .value(); 
3
var indexedValues = _.indexBy(values, function(val) { 
    return val.props.name; 
}); 

/* 
indexedValues is equal to: 
{ a: { props: { name: 'a' } }, 
    b: { props: { name: 'b' } }, 
    c: { props: { name: 'c' } } } 
*/ 

var result = order.map(function(x) { 
    return indexedValues[x]; 
});