ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็มบวก arr เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว
ฟังก์ชันของเราควรจัดเรียงอาร์เรย์อินพุตในลักษณะที่ตัวเลขที่มีผลรวมหลักสูงสุดมาก่อนตามด้วยตัวเลขที่มีจำนวนหลักน้อยกว่า
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
ป้อนข้อมูล
const arr = [5, 34, 1, 13, 76, 8, 78, 101, 57, 565];
ผลผลิต
const output = [565, 78, 76, 57, 8, 34, 5, 13, 101, 1];
คำอธิบายผลลัพธ์
เนื่องจาก 565 มีผลรวมหลักสูงสุดคือ 16 ตามด้วย 78 และ 76 และ 101 และ 1 มีผลรวมหลักที่น้อยที่สุดคือ 2 และ 1 ตามลำดับ
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
const arr = [5, 34, 1, 13, 76, 8, 78, 101, 57, 565]; const addDigits = (num, sum = 0) => { if(num){ return addDigits(Math.floor(num / 10), sum + (num % 10)); }; return sum; }; const sortByDigitSum = (arr = []) => { arr.sort((a, b) => { return addDigits(b) - addDigits(a); }); return arr; }; sortByDigitSum(arr); console.log(arr);
ผลลัพธ์
[ 565, 78, 76, 57, 8, 34, 5, 13, 101, 1 ]