समस्या
हमें एक 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 ]