हमें एक JavaScript फ़ंक्शन लिखना है जो पहले और एकमात्र तर्क के रूप में शाब्दिक मूल्यों की एक सरणी लेता है।
सरणी में कई दोहराव वाले मान होने की संभावना है। हमारे फ़ंक्शन को सरणी को इस तरह क्रमबद्ध करना चाहिए कि जो मान अद्वितीय हैं या जिनकी आवृत्ति सबसे कम है, वे सबसे अधिक आवृत्ति वाले मानों से पहले रखे जाएं।
उदाहरण के लिए -
यदि इनपुट सरणी है -
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
]