我想基于多个字段执行排序操作。 网格的排序顺序应在DC到期日/不在字段之前,然后在顺序号上降序。这是我到目前为止尝试过的,但是没有成功。
var data = [{
"orderNumber": 10040207,
"dcDueDate": "2019-01-28T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041707,
"dcDueDate": null,
"notBeforeDate": "2019-05-06T00:00:00.0000000"
}, {
"orderNumber": 10001471,
"dcDueDate": "2018-04-23T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041213,
"dcDueDate": null,
"notBeforeDate": "2019-03-25T00:00:00.0000000"
}, {
"orderNumber": 10041747,
"dcDueDate": null,
"notBeforeDate": "2019-05-06T00:00:00.0000000"
}, {
"orderNumber": 10041768,
"dcDueDate": "2019-08-05T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041624,
"dcDueDate": "2019-06-10T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041745,
"dcDueDate": null,
"notBeforeDate": "2019-05-06T00:00:00.0000000"
}, {
"orderNumber": 10041728,
"dcDueDate": null,
"notBeforeDate": "2019-02-11T00:00:00.0000000"
}, {
"orderNumber": 10041625,
"dcDueDate": "2019-06-10T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041763,
"dcDueDate": "2019-04-08T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10039839,
"dcDueDate": "2018-07-09T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041751,
"dcDueDate": null,
"notBeforeDate": "2019-06-03T00:00:00.0000000"
}, {
"orderNumber": 96927595,
"dcDueDate": "2019-02-25T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041654,
"dcDueDate": "2019-09-23T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041694,
"dcDueDate": null,
"notBeforeDate": "2019-04-22T00:00:00.0000000"
}, {
"orderNumber": 10040811,
"dcDueDate": "2019-02-18T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041700,
"dcDueDate": "2019-06-17T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041651,
"dcDueDate": null,
"notBeforeDate": "2019-09-23T00:00:00.0000000"
}, {
"orderNumber": 10041621,
"dcDueDate": "2019-06-03T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041766,
"dcDueDate": "2019-08-19T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10040490,
"dcDueDate": "2019-07-29T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041736,
"dcDueDate": "2019-06-10T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10040609,
"dcDueDate": "2019-07-01T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041702,
"dcDueDate": "2019-06-17T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041729,
"dcDueDate": null,
"notBeforeDate": "2019-05-20T00:00:00.0000000"
}, {
"orderNumber": 10041752,
"dcDueDate": null,
"notBeforeDate": "2019-06-03T00:00:00.0000000"
}, {
"orderNumber": 10039411,
"dcDueDate": "2018-04-03T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041029,
"dcDueDate": "2019-07-01T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041748,
"dcDueDate": null,
"notBeforeDate": "2019-05-06T00:00:00.0000000"
}, {
"orderNumber": 10041622,
"dcDueDate": "2019-06-03T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041793,
"dcDueDate": "2019-07-01T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041637,
"dcDueDate": "2019-11-11T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041744,
"dcDueDate": null,
"notBeforeDate": "2019-05-06T00:00:00.0000000"
}, {
"orderNumber": 10040489,
"dcDueDate": "2019-07-29T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10040610,
"dcDueDate": null,
"notBeforeDate": "2019-03-25T00:00:00.0000000"
}, {
"orderNumber": 12,
"dcDueDate": "2019-04-15T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041656,
"dcDueDate": "2019-07-08T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041038,
"dcDueDate": "2019-07-01T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 96927577,
"dcDueDate": "2019-06-24T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041708,
"dcDueDate": null,
"notBeforeDate": "2019-05-06T00:00:00.0000000"
}, {
"orderNumber": 10041730,
"dcDueDate": null,
"notBeforeDate": "2019-05-20T00:00:00.0000000"
}, {
"orderNumber": 10041709,
"dcDueDate": null,
"notBeforeDate": "2019-05-06T00:00:00.0000000"
}, {
"orderNumber": 10041796,
"dcDueDate": "2019-07-01T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10038268,
"dcDueDate": "2020-03-09T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041710,
"dcDueDate": null,
"notBeforeDate": "2019-05-06T00:00:00.0000000"
}, {
"orderNumber": 10041663,
"dcDueDate": null,
"notBeforeDate": "2019-10-21T00:00:00.0000000"
}, {
"orderNumber": 10040055,
"dcDueDate": "2018-07-08T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10040549,
"dcDueDate": "2019-05-13T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 16784298,
"dcDueDate": null,
"notBeforeDate": "2018-12-03T00:00:00.0000000"
}, {
"orderNumber": 10041636,
"dcDueDate": "2019-11-11T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041643,
"dcDueDate": "2019-07-01T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041623,
"dcDueDate": "2019-06-03T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041770,
"dcDueDate": null,
"notBeforeDate": "2019-03-18T00:00:00.0000000"
}, {
"orderNumber": 10040354,
"dcDueDate": "2019-03-18T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041647,
"dcDueDate": "2019-07-01T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041650,
"dcDueDate": null,
"notBeforeDate": "2019-10-07T00:00:00.0000000"
}, {
"orderNumber": 10041794,
"dcDueDate": "2019-07-01T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041693,
"departmentId": "008",
"departmentName": "",
"status": {
"status": "Open",
"updatedAt": "2019-02-08T01:06:55.893957"
},
"supplierId": 426145,
"portId": null,
"eventCode": "P10W5F19",
"locality": "Local",
"destinationCountry": "NewZealand",
"internationalCommercialTerms": "IIS/FIW STR/DC(A TO NZ VIA FTC/XDO)",
"allocationStage": "StoreAllocation",
"dcDueDate": null,
"ffDueDate": null,
"ffBookedDate": null,
"transportMethod": null,
"isNewLine": false,
"createdBy": "BYP",
"createdAt": "2019-02-08T00:00:00.0000000",
"advertisedDate": null,
"notBeforeDate": "2019-04-22T00:00:00.0000000",
"notAfterDate": "2019-04-25T00:00:00.0000000",
"lineItems": []
}, {
"orderNumber": 10041749,
"departmentId": "008",
"departmentName": "",
"status": {
"status": "Open",
"updatedAt": "2019-02-15T04:57:43.953292"
},
"supplierId": 426145,
"portId": null,
"eventCode": "P12W2F19",
"locality": "Local",
"destinationCountry": "NewZealand",
"internationalCommercialTerms": "IIS/FIW STR/DC(A TO NZ VIA FTC/XDO)",
"allocationStage": "StoreAllocation",
"dcDueDate": null,
"ffDueDate": null,
"ffBookedDate": null,
"transportMethod": null,
"isNewLine": false,
"createdBy": "BYP",
"createdAt": "2019-02-15T00:00:00.0000000",
"advertisedDate": null,
"notBeforeDate": "2019-06-03T00:00:00.0000000",
"notAfterDate": "2019-06-06T00:00:00.0000000",
"lineItems": []
}, {
"orderNumber": 10041762,
"dcDueDate": "2019-04-08T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041655,
"dcDueDate": "2019-07-08T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10039840,
"dcDueDate": "2018-07-09T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041750,
"dcDueDate": null,
"notBeforeDate": "2019-06-03T00:00:00.0000000"
}, {
"orderNumber": 10041773,
"dcDueDate": null,
"notBeforeDate": "2019-03-18T00:00:00.0000000"
}, {
"orderNumber": 10040533,
"dcDueDate": "2019-05-13T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041740,
"departmentId": "008",
"dcDueDate": "2019-12-02T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041646,
"dcDueDate": "2019-07-01T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041645,
"dcDueDate": null,
"notBeforeDate": "2019-12-02T00:00:00.0000000"
}, {
"orderNumber": 10040049,
"dcDueDate": "2018-07-01T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041732,
"dcDueDate": null,
"notBeforeDate": "2019-05-20T00:00:00.0000000"
}, {
"orderNumber": 10041696,
"dcDueDate": "2019-05-20T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041731,
"dcDueDate": null,
"notBeforeDate": "2019-05-20T00:00:00.0000000"
}, {
"orderNumber": 10040075,
"dcDueDate": "2018-07-08T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041635,
"dcDueDate": "2019-04-08T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041627,
"dcDueDate": "2019-06-17T00:00:00.0000000",
"notBeforeDate": null
}, {
"orderNumber": 10041771,
"dcDueDate": null,
"notBeforeDate": "2019-03-18T00:00:00.0000000"
}, {
"orderNumber": 10041641,
"dcDueDate": null,
"notBeforeDate": "2019-12-30T00:00:00.0000000"
}, {
"orderNumber": 17022057,
"dcDueDate": "2019-04-15T00:00:00.0000000",
"notBeforeDate": null
}];
function sortByTime(a,b){
let atTime = a.dcDueDate || a.notBeforeDate;
let btTime = b.dcDueDate || b.notBeforeDate;
let timeDiff = new Date(btTime) - new Date(atTime);
return timeDiff
//return new Date(a).getTime()
}
function sortByOrderNumber(a){
return a.orderNumber
}
console.log(_.sortBy(data, ['dcDueDate'],['desc']));
console.log('chnda')
/* console.table(data.sort((a,b)=> {
let atTime = a.dcDueDate || a.notBeforeDate;
let btTime = b.dcDueDate || b.notBeforeDate;
let timeDiff = new Date(btTime) - new Date(atTime);
timeDiff = 0;
if(timeDiff){
return timeDiff
}else{
return b.orderNumber - a.orderNumber
}
})) */
答案 0 :(得分:1)
您可以获取日期并使用字符串比较(String#localeCompare
)和orderNumber
的增量。
var data = [{ orderNumber: 10040207, dcDueDate: "2019-01-28T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041707, dcDueDate: null, notBeforeDate: "2019-05-06T00:00:00.0000000" }, { orderNumber: 10001471, dcDueDate: "2018-04-23T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041213, dcDueDate: null, notBeforeDate: "2019-03-25T00:00:00.0000000" }, { orderNumber: 10041747, dcDueDate: null, notBeforeDate: "2019-05-06T00:00:00.0000000" }, { orderNumber: 10041768, dcDueDate: "2019-08-05T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041624, dcDueDate: "2019-06-10T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041745, dcDueDate: null, notBeforeDate: "2019-05-06T00:00:00.0000000" }, { orderNumber: 10041728, dcDueDate: null, notBeforeDate: "2019-02-11T00:00:00.0000000" }, { orderNumber: 10041625, dcDueDate: "2019-06-10T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041763, dcDueDate: "2019-04-08T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10039839, dcDueDate: "2018-07-09T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041751, dcDueDate: null, notBeforeDate: "2019-06-03T00:00:00.0000000" }, { orderNumber: 96927595, dcDueDate: "2019-02-25T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041654, dcDueDate: "2019-09-23T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041694, dcDueDate: null, notBeforeDate: "2019-04-22T00:00:00.0000000" }, { orderNumber: 10040811, dcDueDate: "2019-02-18T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041700, dcDueDate: "2019-06-17T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041651, dcDueDate: null, notBeforeDate: "2019-09-23T00:00:00.0000000" }, { orderNumber: 10041621, dcDueDate: "2019-06-03T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041766, dcDueDate: "2019-08-19T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10040490, dcDueDate: "2019-07-29T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041736, dcDueDate: "2019-06-10T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10040609, dcDueDate: "2019-07-01T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041702, dcDueDate: "2019-06-17T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041729, dcDueDate: null, notBeforeDate: "2019-05-20T00:00:00.0000000" }, { orderNumber: 10041752, dcDueDate: null, notBeforeDate: "2019-06-03T00:00:00.0000000" }, { orderNumber: 10039411, dcDueDate: "2018-04-03T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041029, dcDueDate: "2019-07-01T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041748, dcDueDate: null, notBeforeDate: "2019-05-06T00:00:00.0000000" }, { orderNumber: 10041622, dcDueDate: "2019-06-03T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041793, dcDueDate: "2019-07-01T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041637, dcDueDate: "2019-11-11T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041744, dcDueDate: null, notBeforeDate: "2019-05-06T00:00:00.0000000" }, { orderNumber: 10040489, dcDueDate: "2019-07-29T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10040610, dcDueDate: null, notBeforeDate: "2019-03-25T00:00:00.0000000" }, { orderNumber: 12, dcDueDate: "2019-04-15T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041656, dcDueDate: "2019-07-08T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041038, dcDueDate: "2019-07-01T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 96927577, dcDueDate: "2019-06-24T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041708, dcDueDate: null, notBeforeDate: "2019-05-06T00:00:00.0000000" }, { orderNumber: 10041730, dcDueDate: null, notBeforeDate: "2019-05-20T00:00:00.0000000" }, { orderNumber: 10041709, dcDueDate: null, notBeforeDate: "2019-05-06T00:00:00.0000000" }, { orderNumber: 10041796, dcDueDate: "2019-07-01T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10038268, dcDueDate: "2020-03-09T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041710, dcDueDate: null, notBeforeDate: "2019-05-06T00:00:00.0000000" }, { orderNumber: 10041663, dcDueDate: null, notBeforeDate: "2019-10-21T00:00:00.0000000" }, { orderNumber: 10040055, dcDueDate: "2018-07-08T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10040549, dcDueDate: "2019-05-13T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 16784298, dcDueDate: null, notBeforeDate: "2018-12-03T00:00:00.0000000" }, { orderNumber: 10041636, dcDueDate: "2019-11-11T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041643, dcDueDate: "2019-07-01T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041623, dcDueDate: "2019-06-03T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041770, dcDueDate: null, notBeforeDate: "2019-03-18T00:00:00.0000000" }, { orderNumber: 10040354, dcDueDate: "2019-03-18T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041647, dcDueDate: "2019-07-01T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041650, dcDueDate: null, notBeforeDate: "2019-10-07T00:00:00.0000000" }, { orderNumber: 10041794, dcDueDate: "2019-07-01T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041693, departmentId: "008", departmentName: "", status: { status: "Open", updatedAt: "2019-02-08T01:06:55.893957" }, supplierId: 426145, portId: null, eventCode: "P10W5F19", locality: "Local", destinationCountry: "NewZealand", internationalCommercialTerms: "IIS/FIW STR/DC(A TO NZ VIA FTC/XDO)", allocationStage: "StoreAllocation", dcDueDate: null, ffDueDate: null, ffBookedDate: null, transportMethod: null, isNewLine: false, createdBy: "BYP", createdAt: "2019-02-08T00:00:00.0000000", advertisedDate: null, notBeforeDate: "2019-04-22T00:00:00.0000000", notAfterDate: "2019-04-25T00:00:00.0000000", lineItems: [] }, { orderNumber: 10041749, departmentId: "008", departmentName: "", status: { status: "Open", updatedAt: "2019-02-15T04:57:43.953292" }, supplierId: 426145, portId: null, eventCode: "P12W2F19", locality: "Local", destinationCountry: "NewZealand", internationalCommercialTerms: "IIS/FIW STR/DC(A TO NZ VIA FTC/XDO)", allocationStage: "StoreAllocation", dcDueDate: null, ffDueDate: null, ffBookedDate: null, transportMethod: null, isNewLine: false, createdBy: "BYP", createdAt: "2019-02-15T00:00:00.0000000", advertisedDate: null, notBeforeDate: "2019-06-03T00:00:00.0000000", notAfterDate: "2019-06-06T00:00:00.0000000", lineItems: [] }, { orderNumber: 10041762, dcDueDate: "2019-04-08T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041655, dcDueDate: "2019-07-08T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10039840, dcDueDate: "2018-07-09T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041750, dcDueDate: null, notBeforeDate: "2019-06-03T00:00:00.0000000" }, { orderNumber: 10041773, dcDueDate: null, notBeforeDate: "2019-03-18T00:00:00.0000000" }, { orderNumber: 10040533, dcDueDate: "2019-05-13T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041740, departmentId: "008", dcDueDate: "2019-12-02T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041646, dcDueDate: "2019-07-01T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041645, dcDueDate: null, notBeforeDate: "2019-12-02T00:00:00.0000000" }, { orderNumber: 10040049, dcDueDate: "2018-07-01T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041732, dcDueDate: null, notBeforeDate: "2019-05-20T00:00:00.0000000" }, { orderNumber: 10041696, dcDueDate: "2019-05-20T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041731, dcDueDate: null, notBeforeDate: "2019-05-20T00:00:00.0000000" }, { orderNumber: 10040075, dcDueDate: "2018-07-08T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041635, dcDueDate: "2019-04-08T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041627, dcDueDate: "2019-06-17T00:00:00.0000000", notBeforeDate: null }, { orderNumber: 10041771, dcDueDate: null, notBeforeDate: "2019-03-18T00:00:00.0000000" }, { orderNumber: 10041641, dcDueDate: null, notBeforeDate: "2019-12-30T00:00:00.0000000" }, { orderNumber: 17022057, dcDueDate: "2019-04-15T00:00:00.0000000", notBeforeDate: null }];
data.sort((a, b) =>
(b.dcDueDate || b.notBeforeDate).localeCompare(a.dcDueDate || a.notBeforeDate) ||
b.orderNumber - a.orderNumber
)
console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }