ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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 ]