از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
مرتب سازی آرایه اشیاء بر اساس ویژگی رشته ValueObject ها برای ذخیره مجموعه ای از ویژگی ها استفاده می شود، که هر کدام ممکن است به عنوان رابطه ای بین یک نام (یا کلید) و یک مقدار در نظر گرفته شود – بنابراین، اشیاء مجموعه ای از جفت های کلید-مقدار هستند. در این راهنما، نگاهی به روش مرتب سازی آرایه ای از…
سرفصلهای مطلب
معرفی
اشیاء برای ذخیره مجموعه ای از ویژگی ها استفاده می شوند، که هر کدام ممکن است به عنوان رابطه ای بین یک نام (یا کلید) و یک مقدار در نظر گرفته شود – بنابراین، اشیاء مجموعه ای از جفت های کلید-مقدار.
در این راهنما، نگاهی به روش مرتب سازی آرایه از اشیاء بر اساس مقدار یک ویژگی رشته با استفاده از
sort()
روش.
مرتب سازی داده ها یکی از کاربردهای اصلی نرم افزار است! ما می توانیم داده ها را مرتب و فیلتر کنیم روی شرایط مختلف، و مرتبسازی بر اساس مقدار یک ویژگی رشته یک امر رایج است. به عنوان مثال، فرض کنید فهرستی از دانش آموزان به همراه آنها داریم firstName
و lastName
:
const students = (
{ firstName: "John", lastName: "Doe", graduationYear: 2022 },
{ firstName: "Stephen", lastName: "Matt", graduationYear: 1402 },
{ firstName: "Abigail", lastName: "Susu", graduationYear: 2022 },
{ firstName: "Zara", lastName: "Kate", graduationYear: 1403 },
{ firstName: "Daniel", lastName: "Vic", graduationYear: 1402 }
);
ما میتوانیم این دانشآموزان را بر اساس هر یک از آنها مرتب کنیم firstName
یا lastName
. میتوانیم مقایسهکنندههای سفارشی بنویسیم (مانند مقایسه طولها)، مرتبسازی آنها از نظر واژگانی، مرتبسازی بر اساس گنجاندن یک رشته فرعی و غیره.
مرتب سازی لیست اشیاء بر اساس رشته
لیست های جاوا اسکریپت الف را پیاده سازی می کنند sort()
متد، که علاوه بر این یک تابع فراخوانی را می پذیرد که به شما امکان می دهد یک مقایسه کننده سفارشی را پیاده سازی کنید. به طور پیش فرض، sort()
متد به طور منطقی نوع داده داده شده را مرتب می کند. برای اعداد صحیح، مقایسه نسبتاً ساده است (به ترتیب صعودی)، و رشته ها از نظر واژگانی مرتب می شوند:
const names = ("john", "kate", "dan");
// Sorting array of strings, lexicographically
console.log(names.sort()); // ("dan","john","kate")
از آنجایی که می خواهیم آرایه ای از اشیاء را مرتب کنیم، بر اساس روی یک ویژگی اساسی، ما می خواهیم یک تابع تماس سفارشی برای مرتب سازی تعریف کنیم. تابع callback دو پارامتر را می پذیرد – دو عنصر که در هر زمان معین باید با هم مقایسه شوند. مستقر روی مقایسه، شما برگردید -1
، 0
یا 1
، نشان دهنده نتیجه مقایسه است. اگر -1
برگردانده می شود، a
کمتر از آن در نظر گرفته می شود b
. 0
نشان دهنده برابری است. 1
نشان می دهد که b
بزرگتر است از a
:
let sortedStudents = students.sort((a, b) => {
if (a.firstName < b.firstName) {
return -1;
}
if (a.firstName > b.firstName) {
return 1;
}
return 0;
});
console.log(sortedStudents);
توجه داشته باشید: ما می توانیم فشرده سازی کنیم if
اظهارات با عدم استفاده از بریس های فرفری.
این خروجی خواهد داشت:
(
{ firstName: "Abigail", lastName: "Susu", graduationYear: 2022 },
{ firstName: "Daniel", lastName: "Vic", graduationYear: 1402 },
{ firstName: "John", lastName: "Doe", graduationYear: 2022 },
{ firstName: "Stephen", lastName: "Matt", graduationYear: 1402 },
{ firstName: "Zara", lastName: "Kate", graduationYear: 1403 }
);
توجه داشته باشید: هنگام مقایسه رشته ها، حروف بزرگ وزن متفاوتی نسبت به حروف کوچک و A
به عنوان مثال، پس از آن قرار می گیرد b
. به طور کلی تمرین خوبی در نظر گرفته میشود که رشتهها را با حروف کوچک یا بزرگ (به دلیل کارایی، معمولاً با حروف کوچک) برابر کنید.
بیایید مورد را حساب کنیم و عبارات if را با استفاده از یک عملگر ادغام تهی کوتاه یا فشرده کنیم:
let sortedStudents = students.sort((a,b) => (a.firstName.toLowerCase() < b.firstName.toLowerCase()) ? -1 : ((b.firstName.toLowerCase() > a.firstName.toLowerCase()) ? 1 : 0));
console.log(sortedStudents);
این نتیجه در:
const students = (
{ firstName: "John", lastName: "Doe", graduationYear: "2021" },
{ firstName: "Stephen", lastName: "Matt", graduationYear: "2026" },
{ firstName: "Abigail", lastName: "Susu", graduationYear: "2022" },
{ firstName: "Zara", lastName: "Kate", graduationYear: "1403" },
{ firstName: "Daniel", lastName: "Vic", graduationYear: "1402" }
);
حتی اگر سالها در اینجا رشتههایی هستند، میتوانیم به راحتی آنها را نیز مرتب کنیم:
let sortedStudents = students.sort((a,b) => (a.graduationYear < b.graduationYear) ? -1 : ((b.graduationYear > a.graduationYear) ? 1 : 0))
console.log(sortedStudents);
این نتیجه در:
(
{ firstName: "John", lastName: "Doe", graduationYear: "2021" },
{ firstName: "Abigail", lastName: "Susu", graduationYear: "2022" },
{ firstName: "Daniel", lastName: "Vic", graduationYear: "1402" },
{ firstName: "Zara", lastName: "Kate", graduationYear: "1403" },
{ firstName: "Stephen", lastName: "Matt", graduationYear: "2026" }
);
نتیجه
در این مقاله کوتاه – ما نگاهی به مرتب سازی آرایه ای از اشیاء مبتنی بر آن انداختیم روی یک ویژگی رشته، با استفاده از sort()
روش در جاوا اسکریپت
منتشر شده در 1403-01-11 07:18:06