हमें एक JavaScript फ़ंक्शन लिखना है जो एकमात्र आर्गुमेंट के रूप में पूर्णांकों की एक सरणी लेता है।
फ़ंक्शन को सरणी में मौजूद पूर्णांकों को उनके बाइनरी प्रतिनिधित्व में मौजूद 1 की संख्या के आधार पर बढ़ते क्रम में क्रमबद्ध करना चाहिए। यदि दो या अधिक संख्याओं में उनके बाइनरी में 1 की संख्या समान है, तो उन्हें उनके परिमाण के अनुसार बढ़ते क्रम में क्रमबद्ध किया जाना चाहिए।
उदाहरण
यदि इनपुट सरणी है:
const arr = [34, 37, 23, 89, 12, 31, 23, 89];
तो आउटपुट सरणी होगी:
const output = [34, 12, 37, 23, 89, 23, 89, 31];
कोड उदाहरण
const arr = [34, 37, 23, 89, 12, 31, 23, 89];
const sortByBinary = (arr = []) => {
const calculateOne = (str = '') => {
let res = 0;
for(let i = 0; i < str.length; i++){
if(str[i] === '1'){
res++;
};
};
return res;
}
const sorter = (a, b) => {
const firstCount = calculateOne((a >>> 0).toString(2));
const secondCount = calculateOne((b >>> 0).toString(2));
return firstCount - secondCount;
};
arr.sort(sorter);
};
sortByBinary(arr);
console.log(arr);
आउटपुट
[ 34, 12, 37, 23, 89, 23, 89, 31 ]