ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของ Numbers เป็นอาร์กิวเมนต์แรกและตัวเดียว
ฟังก์ชันของเราควรเตรียมอาร์เรย์ใหม่ตามอาร์เรย์อินพุต และแต่ละองค์ประกอบที่สอดคล้องกันของอาร์เรย์ใหม่นี้ควรนับองค์ประกอบที่เล็กกว่าองค์ประกอบที่สอดคล้องกันในอาร์เรย์ดั้งเดิม
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
const arr = [4, 7, 1, 4, 7, 5, 3, 8, 9];
จากนั้นผลลัพธ์ควรเป็น −
const output = [2, 4, 0, 1, 2, 1, 0, 0, 0];
คำอธิบายผลลัพธ์:
เนื่องจากจำนวนที่น้อยกว่า 4 ทางด้านขวาคือ 2 (1 และ 3) สำหรับ 7 คือ 4 (1, 4, 5, 3) เป็นต้น
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [4, 7, 1, 4, 7, 5, 3, 8, 9]; const countSmaller = (array = [], num) => array.reduce((acc, val) => { if(val < num){ acc++; }; return acc; }, 0); const smallerArray = (arr = []) => { const res = []; for(let i = 0; i < arr.length; i++){ const el = arr[i]; res[i] = countSmaller(arr.slice(i, arr.length), el); }; return res; }; console.log(smallerArray(arr));
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น -
[ 2, 4, 0, 1, 2, 1, 0, 0, 0 ]