1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
const rows = [ { fields: { price: 19, value: 8, name: "hotdog", }, }, { fields: { price: 12, value: 2, name: "buger", }, }, { fields: { price: 19, value: 44, name: "coolcat", }, }, ];
const sortConfigs = [ { field: "price", mode: "asc" }, { field: "price", mode: "desc" }, ];
const customSorter = function (left, right, field): number { return left.fields[field] - right.fields[field]; };
rows.sort((left, right) => { for (let i = 0; i < sortConfigs.length; i++) { const currentConfig = sortConfigs[i]; const field = currentConfig.field; const mode = currentConfig.mode; let res = customSorter(left, right, currentConfig.field);
if (res !== 0) { return mode === "asc" ? res : res * -1; } }
return 0; });
|