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
| const array = ["A,1.2.3.0.0.7", "A,45.2.3.4", "A,306.0.0", "A,306.0.0.1", "ABBA,86.0.22.1", "ABBA,9.0", "ABBA,0.0.7.45.12"];
function sort(array) {
return [...array]
.map((str) => str.match(/[\dA-Z]+/g))
.map((arr) => arr.map((val) => isNaN(Number(val)) ? val : Number(val)))
.sort((ARR, arr) => {
for (let i = 0; i < Math.max(ARR.length, arr.length); i++) {
const [A, a] = [ARR[i], arr[i]].map((val) => val === undefined ? 0 : val);
if (A > a) { return 1 };
if (A < a) { return -1 };
}
return 0;
})
.map((arr) => arr.join('.'));
}
console.log(sort(array));
// Résultat :
[
'A.1.2.3.0.0.7',
'A.45.2.3.4',
'A.306.0.0',
'A.306.0.0.1',
'ABBA.0.0.7.45.12',
'ABBA.9.0',
'ABBA.86.0.22.1'
]; |