Menu
Coddy logo textTech

שיטת Sort

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-JavaScript של Coddy. שיעור 57 מתוך 65.

השיטה sort() מאפשרת לך למיין את איברי המערך במקום ומחזירה את המערך הממוין. כברירת מחדל, היא ממיינת את האיברים כמחרוזות בסדר אלפביתי עולה.

הנה התחביר הבסיסי:

array.sort([compareFunction])

דוגמה ללא שימוש בפונקציית ההשוואה:

const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits);
// ['apple', 'banana', 'mango', 'orange']

אזהרה: מספרים אינם ממוינים כמצופה ללא פונקציית השוואה:

const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers);
// [1, 100000, 21, 30, 4] (מיון מספרי שגוי)

כדי למיין מספרים כראוי או לממש מיון מותאם אישית, צריך להשתמש בפונקציית השוואה.

הפונקציה להשוואה צריכה להחזיר:

  • ערך שלילי אם a צריך לבוא לפני b
  • ערך חיובי אם b צריך לבוא לפני a
  • אפס אם הם שווים

כך תמיין מספרים באמצעות פונקציית השוואה:

// סדר עולה
const numbers = [1, 30, 4, 21, 100000];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 4, 21, 30, 100000]
// סדר יורד
numbers.sort((a, b) => b - a);
console.log(numbers); // [100000, 30, 21, 4, 1]

דוגמה נוספת לאופן מיון אובייקטים:

const people = [
    { name: 'John', age: 30 },
    { name: 'Alice', age: 25 },
    { name: 'Bob', age: 35 }
];

// מיין לפי גיל (בסדר עולה)
people.sort((a, b) => a.age - b.age);
// מיין לפי שם (למיון אלפביתי השתמש ב-localeCompare())
people.sort((a, b) => a.name.localeCompare(b.name));
challenge icon

אתגר

קל

צרו פונקציה בשם sortByLength שמקבלת מערך של מחרוזות ומחזירה מערך חדש עם אותן מחרוזות, ממוינות לפי אורכן בסדר עולה. אם לשתי מחרוזות יש אותו אורך, יש למיין אותן לפי סדר אלפביתי.

נסו בעצמכם

function sortByLength(arr) {
    return arr.sort((a, b) => {
        // כתבו כאן קוד
    })
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר JavaScript אונליין