Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

เรียงอาร์เรย์ตามอีกอาร์เรย์หนึ่งใน JavaScript

สมมติเรามีสองอาร์เรย์ค่าคงที่แบบนี้:

const arr1 = [1, 3, 2, 4, 5, 6]; const arr2 = [1, 2, 5];

เราต้องเขียนฟังก์ชันที่รับสองอาร์เรย์นี้ แล้วคืนค่าอาร์เรย์ใหม่ที่มีองค์ประกอบทั้งหมดของ arr1 แต่เรียงตาม arr2

องค์ประกอบที่ปรากฏในทั้งสองอาร์เรย์ควรปรากฏก่อนตามลำดับในอาร์เรย์ที่สอง ตามด้วยองค์ประกbyterที่อยู่ในอาร์เรย์แรกอย่างเดียวคงลำดับเดิม

ตัวอย่าง

โค้ดสำหรับนี้:

const arr1 = [1, 3, 2, 4, 5, 6]; const arr2 = [1, 2, 5]; const sortByReference = (arr1, arr2) => { const inBoth = el => arr1.indexOf(el) !== -1 && arr2.indexOf(el) !== -1; const sorter = (a, b) => { if(inBoth(a) && inBoth(b)){ return arr1.indexOf(a) - arr2.indexOf(b); } if(inBoth(a)){ return -1; }; if(inBoth(b)){ return 1; }; return 0; }; arr1.sort(sorter); }; sortByReference(arr1, arr2); console.log(arr1);

ผลลัพธ์

ผลลัพธ์ในคอนโซล:

[ 1, 2, 5, 3, 4, 6 ]