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

การเพิ่มประสิทธิภาพอาร์เรย์แรกเหนืออาร์เรย์ที่สองใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลขสองอาร์เรย์ arr1 และ arr2 ซึ่งมีความยาวเท่ากัน

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

ตัวอย่างเช่น หากอินพุตคือ

อินพุต

const arr1 = [3, 5, 12, 19];
const arr2 = [2, 9, 3, 12];

เอาต์พุต

const output = [3, 12, 5, 19];

คำอธิบายเอาต์พุต

ก่อนสลับ arr1 มี 3 องค์ประกอบที่มากกว่า arr2 แต่ในอาร์เรย์ที่สลับแล้ว ทั้ง 4 องค์ประกอบมากกว่า

ตัวอย่างโค้ด

const arr1 = [3, 5, 12, 19];
const arr2 = [2, 9, 3, 12];
const maximiseArray = (arr1 = [], arr2 = []) => {
arr1.sort((a, b) => b - a);
const indexes = arr2.map((v, index) => index).sort((a, b) => arr2[b] - arr2[a]);
const res = [];
for (let i = 0; i < indexes.length; i++) {
const index = indexes[i];
res[index] = arr1[0] > arr2[index] ? arr1.shift() : arr1.pop();
}
return res;
};
console.log(maximiseArray(arr1, arr2));

ผลลัพธ์

[ 3, 12, 5, 19 ]