हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो पहले और एकमात्र तर्क के रूप में शाब्दिक की एक सरणी लेता है।
सरणी में कई दोहराए जाने वाले मान होने की संभावना है। हमारे फ़ंक्शन को सरणी को इस तरह से सॉर्ट करना चाहिए कि जो मान अद्वितीय हैं या जिनकी आवृत्ति सबसे कम है, उन्हें सबसे अधिक वाले मान से पहले रखा जाता है।
उदाहरण के लिए -
यदि इनपुट ऐरे है -
const arr = [4, 7, 3, 5, 5, 4, 7, 9, 2, 1, 5, 7, 5, 5, 9];
तब आउटपुट ऐरे होना चाहिए -
const output = [ 3, 2, 1, 9, 9, 4, 4, 7, 7, 7, 5, 5, 5, 5, 5 ];
उदाहरण
निम्नलिखित कोड है -
const arr = [4, 7, 3, 5, 5, 4, 7, 9, 2, 1, 5, 7, 5, 5, 9]; const sortByNumbers = (arr = []) => { const map = {}; const res = []; for (let i = 0; i < arr.length; i++) { map[arr[i]] = map[arr[i]] || [0]; map[arr[i]][0]++; map[arr[i]][1] = arr[i]; } const sorted = Object.values(map).sort((a, b) => { if (a[0] === b[0]) { return b[1] - a[1]; } return a[0] - b[0] }); for (let i = 0; i < sorted.length; i++) { const [freq, num] = sorted[i] for (let j = 0; j < freq; j++) { res.push(num); } } return res; }; console.log(sortByNumbers(arr));
आउटपुट
कंसोल आउटपुट निम्नलिखित है -
[ 3, 2, 1, 9, 9, 4, 4, 7, 7, 7, 5, 5, 5, 5, 5 ]