Lodash:从保证订单的对象到数组中选择值列表

时间:2017-11-07 19:17:34

标签: javascript functional-programming lodash

我有一个看起来像的对象:

const myObject = {
   foo: '000',
   bar: '123',
   baz: '456'
};

我想将myObject属性值的子集放入数组中。我需要保留订购。

手动解决方案如下:

const values = [myObject.foo, myObject.baz];

一次尝试可能如下:

const values = _.values(_.pick(myObject, ['foo', 'baz']));

此解决方案不正确,因为pick会创建一个新对象。在新对象上调用_.values将删除在拾取的数组中指定的顺序。

有没有一种简单的方法可以做到这一点?

1 个答案:

答案 0 :(得分:7)

您可以使用与_.pick()类似的_.at()来获取数组:

const myObject = {
   foo: '000',
   bar: '123',
   baz: '456'
};

const array = _.at(myObject, ['foo', 'bar', 'baz']);

console.log(array);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

或者你可以在vanilla JS中使用Array#map

const myObject = {
   foo: '000',
   bar: '123',
   baz: '456'
};

const array = ['foo', 'bar', 'baz'].map((key) => myObject[key]);

console.log(array);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>