我有一个javascript数组。像这样的东西:
let myObjects = [{
'name': 'name 1',
'date': '2017-04-15T22:00:00Z',
'date2': '2017-04-12T22:00:00Z' },
{ 'name': 'name 2',
'date': '2017-04-05T22:00:00Z' },
{ 'name': 'name 3',
'date': '2017-04-05T22:00:00Z' },
{ 'name': 'name 4',
'date': '2017-04-12T22:00:00Z',
'date2': '2017-04-10T22:00:00Z' }];
我想订购myObjects
的date2
,但如果该对象没有这个属性,应考虑其date
价值。
我可以这样做:
myObjects.map(function(obj){ if(!obj.date2){ obj['date2'] = obj['date']; }});
let orderedObjects = _.orderBy(myObjects, 'date2', true);
但是我认为这是一个棘手的解决方案。可以仅使用orderBy
函数而不更改原始数组来完成此操作吗?
使用_.orderBy()
与iteratees功能。对于每个元素destruct date2
,和date
,date
如果date2
不存在,则返回:
const myObjects = [{"name":"name 1","date":"2017-04-15T22:00:00Z","date2":"2017-04-12T22:00:00Z"},{"name":"name 2","date":"2017-04-05T22:00:00Z"},{"name":"name 3","date":"2017-04-05T22:00:00Z"},{"name":"name 4","date":"2017-04-12T22:00:00Z","date2":"2017-06-10T22:00:00Z"}];
const orderedObjects = _.orderBy(myObjects, ({ date2, date }) => date2 || date, true);
console.log(orderedObjects);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句