چطوری خاصیتهای یک شیء رو بر اساس مقدارشون مرتب کنم؟
Sorting object property by values
چطور میتونم ویژگیهای یک شیء جاوااسکریپت رو بر اساس مقادیرشون مرتب کنم؟
مثلا، اگه شیءای مثل زیر داشته باشم:
var list = { "you": 100, "me": 75, "foo": 116, "bar": 15 };
چطور میتونم ویژگیها رو به ترتیبی که مقادیر کوچیکتر به بزرگتر باشه مرتب کنم؟
برای مرتبسازی ویژگیهای یک شیء بر اساس مقادیر ، میتونی ابتدا ویژگیها و مقادیر رو به صورت یک آرایه از زوجهای [کلید، مقدار]
دربیاری، سپس اون آرایه رو مرتب کنی و در نهایت دوباره به یک شیء تبدیل کنی. این روش در ES6 به بعد به راحتی با استفاده از Object.entries()
و Object.fromEntries()
قابل انجامه:
const list = { "you": 100, "me": 75, "foo": 116, "bar": 15 }; const sortedList = Object.fromEntries( Object.entries(list).sort(([,a],[,b]) => a - b) ); console.log(sortedList); // Output: { bar: 15, me: 75, you: 100, foo: 116 }
تو این کد، Object.entries
شیء رو به آرایهای از زوجها تبدیل میکنه، سپس این آرایه بر اساس مقادیر مرتب میشه و در نهایت با Object.fromEntries()
دوباره به یک شیء برمیگرده.
این روش باعث میشه که مقادیر مرتب بشن و در صورت نیاز به استفاده از ترتیب خاصی، مشکلی ایجاد نشه.