مطابق استانداردهای JSON، نیازی نیست که کلید اعضای شیء JSON به همان ترتیبی که ذخیره میشوند، قابل بازیابی باشند. برای مثال اگر یک شیء JSON به شکل زیر ایجاد کنیم، تضمینی نیست که موقع خواندن هم با همین ترتیب روبرو شویم.
var users = { 5: { fname: "fname1", lname: "lname1" } 10: { fname: "fname2", lname: "lname2" } 1: { fname: "fname3", lname: "lname3" } };
برای رفع این مشکل، دو راه وجود دارد:
- مرتبسازی صریح اطلاعات موجود در شیء JSON هنگام استفاده از آن
- نگهداری اطلاعات داخل آرایه
در راه حل اول، پیش از آنکه از اطلاعات استفاده کنیم، آنها را به شکل مورد نیاز مرتب میکنیم و در راه حل دوم، ردیفهایی که میبایست ترتیب خاصی داشته باشند را ابتدا در آرایه ذخیره میکنیم و سپس در ستونها اطلاعات را به شکلی دیگر تبدیل میکنیم.
دو راه حل فوق ممکن است همیشه قابل استفاده نباشند که با توجه به استانداردهای موجود ممکن است لازم شود اطلاعات به شکلی دیگر یا از مسیری دیگر به مقصد ارسال شوند.
مرتبسازی اعضای یک شیء JSON بر اساس کلید عددی
برای انجام این کار میتوانید از قطعه کد زیر استفاده نمایید:
// تبدیل کلیدها به آرایه اعداد صحیح let keys = Object.keys( users ).map(Number); // مرتبسازی آرایه اعداد keys.sort( ( a, b ) => a - b ); // ساخت یک شیء جدید جیسون که کلیدهای آن مرتب شدهاند let sortedUsers = {}; keys.forEach( key => { sortedUsers[ key ] = users[ key.toString() ]; } ); console.log( sortedUsers );