typescript - จัดเรียงแผนที่ตามค่ใน javascript และเก็บดัชนีของฟิลด์หนึ่งไว้ด้านบน
อาจจะเป็นคำถามที่ง่ายมากในฟอรัมนี้ แต่ฉันไม่สามารถหาคำตอบได้เพราะเป็นมือใหม่กับจาวาสคริปต์ ฉันมีโค้ดดังต่อไปนี้ในจาวาสคริปต์ -
Let map = new Map<String,String>
map.set('0', select)
map.set('1', "foo");
map.set('2', "bar");
map.set('3', "baz");
ฉันต้องการจัดเรียงแผนที่นี้ตามค่า แต่ดัชนี 0 ควรอยู่ด้านบนและรายการอื่น ๆ ควรถูกจัดเรียง ดังนั้นผลลัพธ์สุดท้ายควรถูกพิมพ์ดังด้านล่าง -
[{'0':'Select'},{'2':'bar'}, {'3':'baz'}, {'1': 'foo'}];
คุณช่วยฉันเรื่องนี้ได้ไหม?
คำตอบ #1
คุณสามารถรับ Map#entries ของแผนที่และจัดเรียงอาร์เรย์ได้
ในการย้ายค่าหนึ่งไปด้านบน (หรือเก็บค่าค่านี้ไว้ด้านบน) คุณจำเป็นต้องมีค่าที่ส่งกลับสำหรับ Array#sort ซึ่งสะท้อนลำดับที่ต้องการ ในกรณีนี้ a ถูกนำมาจากเงื่อนไข และถ้าเป็นค่าที่เป็นเท็จ เช่น ศูนย์ ส่วนที่สองหลังตัวดำเนินการเชิงตรรกะ OR || จะถูกนำมาใช้
let map = new Map();
map.set('0', "Select");
map.set('1', "foo");
map.set('2', "bar");
map.set('3', "baz");
result = Array.from(map).sort(([, a], [, b]) =>
(b === 'Select') - (a === 'Select') || a.localeCompare(b)
);
console.log(result);