সংক্ষিপ্ত উত্তর
new Map([...map].sort((a, b) =>
))
উদাহরণস্বরূপ, মান স্ট্রিংগুলির সাথে তুলনা করা, যা সমান হতে পারে, আমরা একটি সারণি ফাংশনটি পাস করি যা অ্যাক্সেস করে [1] এবং এর সমান শর্ত রয়েছে যা 0:
new Map([...map].sort((a, b) => (a[1] > b[1] && 1) || (a[1] === b[1] ? 0 : -1)))
মূল স্ট্রিংগুলির সাথে তুলনা করা, যা সমান হতে পারে না (অভিন্ন স্ট্রিং কীগুলি একে অপরকে ওভাররাইট করতে পারে), আমরা সমান শর্তটি এড়িয়ে যেতে পারি। যাইহোক, আমাদের এখনও স্পষ্টভাবে ফিরে আসা উচিত -১, কারণ অলসভাবে a[0] > b[0]
ভুলভাবে ফিরে আসা মিথ্যা দেয় (0 হিসাবে গণ্য করা হয়, সমান) যখন a[0] < b[0]
:
new Map([...map].sort((a, b) => a[0] > b[0] ? 1 : -1))
উদাহরণ সহ বিস্তারিত
.entries()
মধ্যে [...map.entries()]
(অনেক উত্তর প্রস্তাবিত) সম্ভবত মানচিত্র যদি না জাতীয় ইঞ্জিন অপ্টিমাইজ করে যে দূরে আপনার জন্য একটি অতিরিক্ত পুনরাবৃত্তির যোগ অপ্রয়োজনীয় হয়।
সাধারণ পরীক্ষার ক্ষেত্রে, প্রশ্নটি যা জিজ্ঞাসা করে তা আপনি করতে পারেন:
new Map([...map].sort())
... যা, কী সব স্ট্রিং হয়, squashed এবং কমা দ্বারা যোগদান মত কী-মান স্ট্রিং বাধ্য তুলনা '2-1,foo'
এবং '0-1,[object Object]'
নতুন সন্নিবেশ অর্ডার দিয়ে ফিরে একটি নতুন মানচিত্র:
দ্রষ্টব্য: আপনি যদি কেবলমাত্র {}
এসও এর কনসোল আউটপুট দেখতে পান তবে আপনার আসল ব্রাউজার কনসোলটি দেখুন
const map = new Map([
['2-1', 'foo'],
['0-1', { bar: 'bar' }],
['3-5', () => 'fuz'],
['3-2', [ 'baz' ]]
])
console.log(new Map([...map].sort()))
তা যে , এটা জোর খাটানো বা ভালো stringification উপর নির্ভর করা একটি ভাল অনুশীলন নয়। আপনি যেমন চমক পেতে পারেন:
const map = new Map([
['2', '3,buh?'],
['2,1', 'foo'],
['0,1', { bar: 'bar' }],
['3,5', () => 'fuz'],
['3,2', [ 'baz' ]],
])
console.log('Buh?', new Map([...map].sort()))
for (const iteration of map) {
console.log(iteration.toString())
}
এর মতো বাগগুলি ডিবাগ করা সত্যিই শক্ত - এটি ঝুঁকিপূর্ণ করবেন না!
আপনি কি বা মান উপর বাছাই করতে চান, এটা দিয়ে স্পষ্টভাবে তাদের অ্যাক্সেস সেরা a[0]
এবং b[0]
সাজানোর ফাংশন ভালো। মনে রাখবেন আমরা ফেরত পাঠাবেন -1
এবং 1
সামনে এবং পরে না false
বা 0
যেমন কাঁচা সঙ্গে a[0] > b[0]
কারণ যে সমান হিসাবে গণ্য হয়:
const map = new Map([
['2,1', 'this is overwritten'],
['2,1', '0,1'],
['0,1', '2,1'],
['2,2', '3,5'],
['3,5', '2,1'],
['2', ',9,9']
])
const sortStringKeys = (a, b) => a[0] > b[0] ? 1 : -1
const sortStringValues = (a, b) => (a[1] > b[1] && 1) || (a[1] === b[1] ? 0 : -1)
console.log('By keys:', new Map([...map].sort(sortStringKeys)))
console.log('By values:', new Map([...map].sort(sortStringValues)))