3 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
使用 Date.parse() 從日期字符串中獲取毫秒
let data = [{
name: 'John',
vouchers: [{
voucherId: 1,
issuedAt: '2020-12-15T16:26:36.3548091+01:00',
},
{
voucherId: 2,
issuedAt: '2020-12-15T16:26:36.3548091+01:00',
},
],
},
{
name: 'Lisa',
vouchers: [{
voucherId: 1,
issuedAt: '2020-12-13T16:26:36.3548091+01:00',
}, ],
},
];
data.sort(function(a, b) {
return (
Date.parse(a['vouchers'][0]['issuedAt']) -
Date.parse(b['vouchers'][0]['issuedAt'])
);
});
console.log(data)

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
鑒于憑證數(shù)組都具有相同的issuedAt屬性,您應(yīng)該能夠僅使用第一個(gè)條目來(lái)執(zhí)行此操作:
const data = [{name: 'John', vouchers: [{voucherId: 1, issuedAt: '2020-12-15T16:26:36.3548091+01:00'}, {voucherId: 2, issuedAt: '2020-12-15T16:26:36.3548091+01:00'}]}, {name: 'Lisa', vouchers: [{voucherId: 1, issuedAt: '2020-12-13T16:26:36.3548091+01:00'}]}]
const sorter = ({vouchers: [{issuedAt: x}]}, {vouchers: [{issuedAt: y}]}) =>
x < y ? -1 : x > y ? 1 : 0
console .log ([...data] .sort (sorter))
我們使用[...data]廉價(jià)的淺克??;我不想改變輸入數(shù)據(jù)。但data .sort (sorter)如果你真的想改變你的數(shù)組,你可以直接調(diào)用。

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您希望首先列出最近時(shí)間的人員,請(qǐng)獲取所有優(yōu)惠券的最大發(fā)放日期并減去它們。
注意:我更改了時(shí)間,以便排序真正起作用。
const result = [{
name: 'John',
vouchers: [{
voucherId: 1,
issuedAt: '2020-12-15T16:26:36.3548091+01:00'
}, {
voucherId: 2,
issuedAt: '2020-12-15T17:26:36.3548091+01:00'
}, ]
}, {
name: 'John',
vouchers: [{
voucherId: 1,
issuedAt: '2020-12-13T18:26:36.3548091+01:00'
}]
}];
const sorted = result.sort(
({ vouchers: a = [] }, { vouchers: b = [] }) =>
Math.max(...a.map(({ issuedAt: d = 0 }) => new Date(d))) -
Math.max(...b.map(({ issuedAt: d = 0 }) => new Date(d)))
);
console.log(sorted);
.as-console-wrapper { top: 0; max-height: 100% !important; }
添加回答
舉報(bào)