基于特定的prop数组顺序排序数组对象

时间:2015-09-22 04:56:30

标签: lodash

var values = [
  {
    'props': {
      'name': 'a'
    }
  },
  {
    'props': {
      'name': 'b'
    }
  },
  {
    'props': {
      'name': 'c'
    }
  }
]

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

如何根据values props.name的值重新排序order

2 个答案:

答案 0 :(得分:4)

链接indexBy()at(),为您提供简洁易读的代码:

_(values)
    .indexBy('props.name')
    .at(order)
    .value();

答案 1 :(得分: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]; 
});
相关问题