Giả sử, chúng ta có một mảng các chuỗi như thế này -
const arr = [ '.0', '.1', '.2', '.4', '.2.1', '.3', '.4.1', '.5', '.5.1.5' ];
Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng như vậy. Hàm của chúng ta chỉ nên sắp xếp mảng theo thứ tự tăng dần (như được thấy bởi một giáo dân).
Điều này có nghĩa là các chuỗi có '.0', theo sau là '.1, theo sau là' .2, v.v. Do đó, sau khi được sắp xếp, mảng sẽ có dạng -
const output = [ '.0', '.1', '.2.1', '.2, '.3', '.4', '.4.1', '.5', '.5.1.5' ];
Ví dụ
Mã cho điều này sẽ là -
const arr = [ '.0', '.1', '.2', '.4', '.2.1', '.3', '.4.1', '.5', '.5.1.5' ]; const compare = (a, b) => { if (a === b) { return 0 }; const aArr = a.split("."), bArr = b.split("."); for (let i = 0; i < Math.min(aArr.length, bArr.length); i++) { if (parseInt(aArr[i]) < parseInt(bArr[i])) { return -1 }; if (parseInt(aArr[i]) > parseInt(bArr[i])) { return 1 }; } if (aArr.length < bArr.length) { return -1 }; if (aArr.length > bArr.length) { return 1 }; return 0; }; arr.sort(compare); console.log(arr);
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
[ '.0', '.1', '.2', '.2.1', '.3', '.4', '.4.1', '.5', '.5.1.5' ]