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 ]