我有一個物件陣列,如下所示:
var tempListData = [
{
"driver": "467f0b0bc9a",
"company": "9d85ccdcfc5",
"driverName": "David Smith",
"companyName": "Express",
"CreateIdlingEvent": 0,
"CreateSpeedingEvent": 2502,
"CreateHarshAccelerationEvent": 1988,
"CreateHarshDecelerationEvent": 1450
},
{
"driver": "7fcc39deb8fc7",
"company": "a2345ccdcfc5",
"driverName": "John Doe",
"companyName": "Express",
"CreateSpeedingEvent": 2970,
"CreateHarshAccelerationEvent": 2414,
"CreateHarshDecelerationEvent": 1750,
"CreateIdlingEvent": 0
},
{
"driver": "c4e39006",
"company": "9d8616dd",
"driverName": "Henry",
"companyName": "Express",
"CreateIdlingEvent": 250,
"CreateSpeedingEvent": 2300,
"CreateHarshAccelerationEvent": 1988,
"CreateHarshDecelerationEvent": 1450
}
]
我需要根據CreateSpeedingEventandCreateIdlingEvent和CreateHarshAccelerationEventandCreateHarshDecelerationEvent值的最大總數對物件進行排序。
即具有“CreateIdlingEvent”、CreateSpeedingEvent、CreateHarshAccelerationEvent 和 CreateHarshDecelerationEvent 的最大值的物件,應該成為陣列中的第一個物件。
uj5u.com熱心網友回復:
1)您可以使用自定義排序比較器功能對其進行排序
var tempListData = [
{
driver: "467f0b0bc9a",
company: "9d85ccdcfc5",
driverName: "David Smith",
companyName: "Express",
CreateIdlingEvent: 0,
CreateSpeedingEvent: 2502,
CreateHarshAccelerationEvent: 1988,
CreateHarshDecelerationEvent: 1450,
},
{
driver: "7fcc39deb8fc7",
company: "a2345ccdcfc5",
driverName: "John Doe",
companyName: "Express",
CreateSpeedingEvent: 2970,
CreateHarshAccelerationEvent: 2414,
CreateHarshDecelerationEvent: 1750,
CreateIdlingEvent: 0,
},
{
driver: "c4e39006",
company: "9d8616dd",
driverName: "Henry",
companyName: "Express",
CreateIdlingEvent: 250,
CreateSpeedingEvent: 2300,
CreateHarshAccelerationEvent: 1988,
CreateHarshDecelerationEvent: 1450,
},
];
const getSum = (o) =>
o.CreateIdlingEvent
o.CreateSpeedingEvent
o.CreateHarshAccelerationEvent
o.CreateHarshDecelerationEvent;
const result = [...tempListData].sort((a, b) => getSum(b) - getSum(a));
console.log(result);
2)您可以先使用創建一個map總和Map,然后使用自定義排序功能對其進行排序:
var tempListData = [
{
driver: "467f0b0bc9a",
company: "9d85ccdcfc5",
driverName: "David Smith",
companyName: "Express",
CreateIdlingEvent: 0,
CreateSpeedingEvent: 2502,
CreateHarshAccelerationEvent: 1988,
CreateHarshDecelerationEvent: 1450,
},
{
driver: "7fcc39deb8fc7",
company: "a2345ccdcfc5",
driverName: "John Doe",
companyName: "Express",
CreateSpeedingEvent: 2970,
CreateHarshAccelerationEvent: 2414,
CreateHarshDecelerationEvent: 1750,
CreateIdlingEvent: 0,
},
{
driver: "c4e39006",
company: "9d8616dd",
driverName: "Henry",
companyName: "Express",
CreateIdlingEvent: 250,
CreateSpeedingEvent: 2300,
CreateHarshAccelerationEvent: 1988,
CreateHarshDecelerationEvent: 1450,
},
];
const map = new Map();
tempListData.forEach((o) =>
map.set(
o.driver,
o.CreateIdlingEvent
o.CreateSpeedingEvent
o.CreateHarshAccelerationEvent
o.CreateHarshDecelerationEvent
)
);
const result = [...tempListData].sort((a, b) => map.get(b.driver) - map.get(a.driver));
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/366743.html
標籤:javascript 数组
下一篇:總和達到某個值的指標是什么
