gpt4 book ai didi

javascript - 在javascript中对多个字段进行排序

转载 作者:行者123 更新时间:2023-11-29 23:05:57 27 4
gpt4 key购买 nike

我想根据多个字段进行排序操作。网格的排序顺序应按 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
}
})) */

最佳答案

您可以获取日期并使用字符串比较 ( 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; }

关于javascript - 在javascript中对多个字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54783630/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com