ค้นหาเว็บไซต์

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);