متن خبر

چگونه آرایه ای از اشیاء را بر اساس نام ویژگی در جاوا اسکریپت مرتب کنیم

چگونه آرایه ای از اشیاء را بر اساس نام ویژگی در جاوا اسکریپت مرتب کنیم

شناسهٔ خبر: 446543 -




در این آموزش، با یکی از متداول‌ترین عملیاتی که در حین کار با جاوا اسکریپت انجام می‌دهید، آشنا خواهید شد: مرتب‌سازی آرایه‌ای از اشیا بر اساس نام ویژگی.

مفاهیم پایه آرایه

بیایید برخی از مفاهیم اساسی جاوا اسکریپت را قبل از پرداختن عمیق تر به موضوع مرور کنیم تا اطلاعات پس زمینه مورد نیاز خود را داشته باشید.

آرایه های جاوا اسکریپت و آرایه اشیاء

آرایه ها یکی از بلوک های اساسی هر زبان برنامه نویسی هستند. آنها ساده ترین ساختار داده هستند، اما آنقدر قدرتمند هستند که ساختار داده زیربنایی بسیاری از برنامه هایی هستند که امروزه استفاده می کنیم.

 const arr = ["apple", "banana", "orange", "mango"]
مثال: آرایه جاوا اسکریپت

معمولی ترین کاربرد آرایه ها ارسال داده از یک ماشین به ماشین دیگر است. منظورم از ماشین، کلاینت، سرور، سرور پایگاه داده و غیره است. چنین داده هایی اغلب مجموعه ای از رکوردهای مشابه هستند که در یک آرایه گروه بندی شده اند. هر رکورد با یک شی نشان داده می شود که یک عنصر آرایه است.

به این آرایه ها آرایه اشیاء می گویند. در اینجا نمونه ای از آرایه ای از اشیاء در جاوا اسکریپت آمده است:

 const response = [ { id: 1, name: "John", age: 41 }, { id: 2, name: "Zack", age: 35 }, { id: 3, name: "Peter", age: 47 } ]
مثال: آرایه از اشیاء

همانطور که می بینید، این به سادگی یک آرایه است. و هر عنصر در آرایه یک شی است. از این رو نام، آرایه از اشیاء .

شما می توانید آرایه ای از اشیاء را مانند هر آرایه دیگری مدیریت کنید و از توابع آرایه داخلی استفاده کنید. اما شرایطی وجود دارد که استفاده از توابع داخلی امکان پذیر نیست و برای رسیدن به هدف باید تغییرات خاصی را انجام دهید.

کلیدهای موجود در اشیاء جاوا اسکریپت

اشیاء در جاوا اسکریپت مجموعه‌ای از جفت‌های کلید-مقدار هستند که هر کلید مقدار خاصی را مشخص می‌کند. کلیدها را به عنوان برچسب هایی که برای بازیابی اطلاعات از فرهنگ لغت اختصاص می دهید در نظر بگیرید. برای مثال:

 const person = { id: 1, name: "John", age: 41 };
مثال: اشیاء جاوا اسکریپت

در مثال بالا، id ، name و age کلیدها هستند در حالی که '1'، 'John' و '25' مقادیر متناظر آنها هستند. وقتی در مورد مرتب‌سازی آرایه‌ای از اشیاء بر اساس یک کلید صحبت می‌کنیم، منظور ما مرتب‌سازی عناصر آرایه بر اساس مقادیر مرتبط با یک ویژگی خاص در هر شی است.

تعیین نوع داده یک ویژگی

قبل از مرتب سازی، بسیار مهم است که نوع داده خاصیتی را که می خواهید به عنوان کلید مرتب سازی استفاده کنید، درک کنید. جاوا اسکریپت قوانین مرتب سازی متفاوتی برای مقادیر عددی و رشته ای دارد. دانستن نوع داده به ما کمک می کند تا روش مرتب سازی مناسب را انتخاب کنیم.

اگر از نوع داده مطمئن نیستید، می توانید نوع داده را با اپراتور typeof تحلیل کنید یا نوع را به مورد دلخواه خود تبدیل کنید.

 // Checking if the type is as expected if(typeof obj.name === "string") { // Do something } // Converting property's type const string = String(obj.propertyName) const number = Number(obj.propertyName)

چگونه یک آرایه از اشیاء را با یک کلید خاص از شی مرتب کنیم

قبل از مرتب سازی آرایه باید دو چیز را بدانیم:

    نوع داده: نوع داده مقداری را که قصد داریم مرتب کنیم را درک کنیم.

    ترتیب مرتب سازی: تعیین کنید که قصد داریم به ترتیب صعودی یا نزولی مرتب کنیم.

ما موارد استفاده مختلف را پوشش خواهیم داد تا تصویر کاملی از این مفاهیم بدست آوریم.

چگونه یک آرایه را بر اساس مقادیر عددی مرتب کنیم

بیایید با مرتب کردن یک آرایه بر اساس مقادیر عددی، به ویژه ویژگی age، شروع کنیم. هدف ما این است که عناصر آرایه (یعنی اشیاء) را بر اساس ویژگی age به ترتیب صعودی مرتب کنیم. متد sort() داخلی ابزار انتخابی ما خواهد بود:

 response.sort((a, b) => a.age - b.age)
کد جاوا اسکریپت برای مرتب کردن آرایه از اشیاء به ترتیب صعودی age

و بس! اشیاء در آرایه بر اساس ویژگی age مرتب می شوند. شما می توانید این موضوع را با وارد کردن خروجی در کنسول تأیید کنید:

 [ { id: 2, name: 'Zack', age: 35 }, { id: 1, name: 'John', age: 41 }, { id: 3, name: 'Peter', age: 47 } ]
آرایه مرتب شده بر اساس ویژگی age هر شی

اگر می خواهید به ترتیب نزولی مرتب کنید، فقط باید موقعیت متغیرهای داخل تابع را تغییر دهید.

 response.sort((a, b) => b.age - a.age)
کد جاوا اسکریپت برای مرتب کردن آرایه از اشیاء به ترتیب نزولی age

درست مانند آن، آرایه به ترتیب age نزولی مرتب می شود.

 [ { id: 3, name: 'Peter', age: 47 }, { id: 1, name: 'John', age: 41 }, { id: 2, name: 'Zack', age: 35 } ]
آرایه مرتب شده بر اساس ویژگی age هر شی

مرتب‌سازی اعداد در یک آرایه آسان است – پس حالا بیایید چیز کمی سخت‌تر را امتحان کنیم: مرتب‌سازی بر اساس مقادیر رشته.

چگونه یک آرایه را بر اساس مقادیر رشته مرتب کنیم

من در روزهای ابتدایی برای انجام این عمل تلاش زیادی کردم. در نهایت، ساده ترین روش را برای انجام آن پیدا کردم. مشابه مثال قبلی، در اینجا قصد داریم اشیاء را بر اساس مقادیر رشته مرتب کنیم.

ما از یک تابع رشته داخلی localCompare() استفاده خواهیم کرد. برای مقایسه رشته ها بر اساس ترتیب حساس به زبان استفاده می شود. بیایید تابع sort() را با کمک این تابع بنویسیم:

 response.sort((a, b) => a.name.localeCompare(b.name));
کد جاوا اسکریپت برای مرتب کردن آرایه از اشیاء به ترتیب صعودی name
 [ { id: 1, name: 'John', age: 41 }, { id: 3, name: 'Peter', age: 47 }, { id: 2, name: 'Zack', age: 35 } ]
آرایه مرتب شده بر اساس ویژگی age هر شی

همانطور که پیش بینی می شود، عناصر آرایه بر اساس ویژگی name در داخل هر عنصر شی مرتب می شوند.

مرتب سازی به ترتیب نزولی نیز کار بیهوده ای است:

 response.sort((a, b) => b.name.localeCompare(a.name));
کد جاوا اسکریپت برای مرتب کردن آرایه از اشیاء به ترتیب نزولی age

خروجی به صورت زیر خواهد بود:

 [ { id: 2, name: 'Zack', age: 35 }, { id: 3, name: 'Peter', age: 47 }, { id: 1, name: 'John', age: 41 } ]
آرایه مرتب شده بر اساس ویژگی age هر شی

موارد لبه ای که باید در نظر گرفته شوند

در حین مرتب سازی آرایه های اشیاء، پرداختن به موارد لبه بالقوه ضروری است.

کلید باید در همه اشیا وجود داشته باشد

اطمینان حاصل کنید که کلید مورد استفاده برای مرتب سازی در همه اشیا وجود دارد. حتی اگر یک شی واحد کلید را از دست داده باشد، آرایه اصلی بدون تغییر برگردانده می شود. در اینجا نحوه رسیدگی به چنین موردی آمده است:

 if (array.every(obj => 'age' in obj)) { array.sort((a, b) => a.age - b.age); } else { console.error("Some objects lack the 'age' key. Sorting is not feasible."); }
اطمینان از داشتن کلیدی که می‌خواهیم با آن مرتب‌سازی کنیم، همه اشیا دارند

مقادیر تهی یا تعریف نشده نباید وجود داشته باشد

کلیدی که می خواهید برای مرتب سازی استفاده کنید نباید null یا undefined باشد. اگر مقدار نادرست باشد می توانید به جای کلید یک رشته خالی ارسال کنید.

 array.sort((a, b) => (a.name || "").localeCompare(b.name || ""));
اطمینان حاصل کنید که کلید یک مقدار نادرست یا دارای نوع null یا undefined .

همه مقادیر باید رشته ای برای مقایسه رشته ها باشند

هنگام مرتب‌سازی اشیاء بر اساس یک کلید خاص، اگر قرار است کلید یک رشته باشد، مطمئن شوید که کلید در همه موارد دارای نوع داده String است. یک راه حل برای جلوگیری از اشکالات احتمالی، تبدیل کلید به رشته ای در تابع sort() است.

 array.sort((a, b) => String(a.name).localeCompare(String(b.name)));
تبدیل کلید به یک شی برای جلوگیری از خطاهای احتمالی

حساسیت محلی

وقتی با خصوصیات رشته سروکار دارید، حساسیت زبان و حروف کوچک و بزرگ را در نظر بگیرید. اطلاعات محلی و گزینه های مناسب را برای localeCompare() فراهم کنید.

 array.sort((a, b) => a.title.localeCompare(b.title, 'en', { sensitivity: 'accent' }));
تنظیم رشته ها با محلی مناسب

بسته شدن

درک عملیات آرایه باعث افزایش کارایی کد شما و بهبود عملکرد برنامه شما می شود. در این مقاله یاد گرفتید که چگونه آرایه های اشیاء را بر اساس یک کلید از داخل شی مرتب کنید.

امیدوارم این مقاله برای شما مفید بوده باشد. اگر چنین کردید، فراموش نکنید که آن را با دوستان خود به اشتراک بگذارید تا دیگران نیز از آن بهره مند شوند. اگر روش بهتری برای مرتب سازی آرایه ها می شناسید، به من بگویید! من دوست دارم یاد بگیرم.

اگر می خواهید سلام کنید، من در توییتر فعال هستم (اکنون X ) !

مطالب بیشتر

تابع sort() جاوا اسکریپت

شی Intl.Collator

تابع جاوا اسکریپت l ocaleCompare( ).

تا دفعه بعد کدنویسی مبارک :)

خبرکاو

ارسال نظر




تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است