מודול 6 · שיעור 4 מתוך 424/32 בקורס~12 min
שיעורי מודול (4/4)
מיון
למיון מערך ב-JavaScript יש מלכודת גדולה: sort() משנה את המערך המקורי
וכברירת מחדל ממיין כמחרוזות.
המלכודת
JS
const nums = [10, 2, 1, 20];
nums.sort();
// [1, 10, 2, 20] ← !? sorted as strings: "1" < "10" < "2"למיון מספרי עליך לעבור משווה (a, b) => number:
a - b< 0 →aמגיע ראשוןa - b> 0 →bמגיע ראשוןa - b=== 0 → ההזמנה ללא שינוי
JS
const nums = [10, 2, 1, 20];
nums.sort((a, b) => a - b);
// [1, 2, 10, 20] ← ascending order
nums.sort((a, b) => b - a);
// [20, 10, 2, 1] ← descendingמיון אובייקטים לפי שדה
JS
const utenti = [
{ nome: 'Anna', eta: 30 },
{ nome: 'Luca', eta: 12 },
{ nome: 'Sara', eta: 18 },
];
utenti.sort((a, b) => a.eta - b.eta);
// [{Luca,12}, {Sara,18}, {Anna,30}]עבור מחרוזות אתה יכול להשוות אותם עם localeCompare:
JS
const nomi = ['Bruno', 'aurora', 'Carlo'];
nomi.sort((a, b) => a.localeCompare(b));
// ['aurora', 'Bruno', 'Carlo']לא משנה את המקור
שתי אפשרויות:
JS
// 1) copy + sort
const copia = [...nums].sort((a, b) => a - b);
// 2) toSorted (modern, ES2023)
const ordinati = nums.toSorted((a, b) => a - b);נסה את זה
פעילות גופנית#js.m6.l4.e1
ניסיונות: 0טוען...
הגדר `sortAscending(nums)`: החזר עותק חדש של המערך, ממוין בסדר עולה כמספרים. אסור לשנות את המקור.
טוען עורך...
הצג רמז
[...nums].sort((a, b) => a - b)
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
פעילות גופנית#js.m6.l4.e2
ניסיונות: 0טוען...
הגדר `sortByAgeAscending(people)`: בהינתן מערך של { name, age }, החזר עותק חדש ממוין לפי גיל עולה. אסור לשנות את המקור.
טוען עורך...
הצג רמז
[...אנשים].sort((a, b) => a.age - b.age)
הפתרון זמין לאחר 3 ניסיונות