वर्णों, वर्णों और वर्णों की वर्णमाला को वर्णनात्मक बनाना - सीएसएस-ट्रिक्स

Anonim

एक सारणी:

let fruits = (`bananas`, `Apples`, `Oranges`);

आप वर्णमाला के अनुसार इसे आसान कर सकते हैं:

fruits.sort();

लेकिन सरणी में असंगत आवरण को देखें ... अपरकेस वर्णों को सभी लोअरकेस वर्णों से पहले क्रमबद्ध किया जाएगा (विचित्र रूप से पर्याप्त) इसलिए यह थोड़ा अधिक जटिल होगा:

let fruits = (`bananas`, `Apples`, `Oranges`); fruits.sort((a, b) => ( return a.toLowerCase().localeCompare(b.toLowerCase()); )) console.log(fruits); // ("Apples", "bananas", "Oranges")

वस्तुओं का सरणी

अगर आप जिस चीज को छांटने की कोशिश कर रहे हैं वह वस्तुओं के भीतर निहित है, तब भी चीजें मुश्किल हो जाती हैं। आसानी से JSON एपीआई के साथ काम करने का मामला हो सकता है।

let fruits = ( ( fruit: `Bananas` ), ( fruit: `apples` ), ( fruit: `Oranges` ) );

हम इसके लिए एक कस्टम सॉर्टिंग फंक्शन बना सकते हैं, लेकिन एक मामूली कदम यह है कि एक अधिक जेनेरिक फ़ंक्शन बनाया जाए जो एक परम के रूप में सॉर्ट करने के लिए कुंजी लेता है।

const propComparator = (propName) => (a, b) => a(propName).toLowerCase() == b(propName).toLowerCase() ? 0 : a(propName).toLowerCase() < b(propName).toLowerCase() ? -1 : 1

तो अब हम इसे सॉर्ट करने के लिए उपयोग कर सकते हैं:

fruits.sort(propComparator(`fruit`)); console.log(fruits); /* ( (fruit: "apples"), (fruit: "Bananas"), (fruit: "Oranges") ) */

बस एक वस्तु

अगर हम सिर्फ एक वस्तु है ...

let fruits = ( Bananas: true, apples: false, Oranges: true );

हमें अभी भी उन कुंजियों को नीचे करने की आवश्यकता है, लेकिन हम कुंजियों की एक सरणी को सॉर्ट कर सकते हैं और फिर कुंजियों के उस नए क्रमबद्ध सरणी से एक नई वस्तु बना सकते हैं।

let sortedFruits = (); Object.keys(fruits).sort((a, b) => ( return a.toLowerCase().localeCompare(b.toLowerCase()); )).forEach(function(key) ( sortedFruits(key) = fruits(key); )); console.log(sortedFruits); /* ( apples: false, Bananas: true, Oranges: true ) */

कुंजी पर सॉर्ट करने के लिए ऑब्जेक्ट्स का सरणी

let fruits = ( ( Bananas: true ), ( Apples: false ), ( oranges: true ) );

यह शायद उन सभी के लिए मुश्किल है, लेकिन इसे सुलझाने के लिए ऊपर पर्याप्त जानकारी होनी चाहिए। उसे ले लो।

लाइव कोड

CodePen पर क्रिस कॉयर (@chriscoyier) द्वारा पेन वर्णानुक्रमन सारणी देखें।