Étant donné un tableau de chaînes, comment puis-je diviser ces chaînes en différents tableaux par ordre alphabétique?
Exemple:
let array = ['cheese', 'corn', 'apple', 'acorn', 'beet', 'banana', 'yam', 'yucca']
// return should be something like:
a = ['apple', 'acorn']
b = ['banana', 'beet']
c = ['cheese', 'corn']
y = ['yam', 'yucca']
3 réponses
Pour les mots = ["maïs", "à", "ajouter", "adhérer", "arbre"]
Ce faisant
const getSections = () => {
if (words.length === 0) {
return [];
}
return Object.values(
words.reduce((acc, word) => {
let firstLetter = word[0].toLocaleUpperCase();
if (!acc[firstLetter]) {
acc[firstLetter] = { title: firstLetter, data: [word] };
} else {
acc[firstLetter].data.push(word);
}
return acc;
}, {})
);
Se traduira par un joli regroupement comme,
[{title: 'T', data: ["to", "tree"]}, ...]
Qui va assez bien avec SectionList
dans React Native.
Vous pouvez également remplir un Map
objet à partir de votre tableau, puis obtenez des valeurs basées sur les clés (premier caractère de la chaîne):
let array = ['cheese', 'corn', 'apple', 'acorn', 'beet', 'banana', 'yam', 'yucca'];
let map = ((m, a) => (a.forEach(s => {
let a = m.get(s[0]) || [];
m.set(s[0], (a.push(s), a));
}), m))(new Map(), array);
console.log(map.get("a"));
console.log(map.get("b"));
console.log(map.get("c"));
.as-console-wrapper { max-height: 100% !important; top: 0; }
La chose la plus sensée serait de créer un objet dictionnaire plutôt que d'essayer de l'assigner à un tas de variables individuelles. Vous pouvez le faire facilement ici avec reduce()
:
let array = ['cheese', 'corn', 'apple', 'acorn', 'beet', 'banana', 'yam', 'yucca']
let dict = array.reduce((a, c) => {
// c[0] should be the first letter of an entry
let k = c[0].toLocaleUpperCase()
// either push to an existing dict entry or create one
if (a[k]) a[k].push(c)
else a[k] = [c]
return a
}, {})
console.log(dict)
// Get the A's
console.log(dict['A'])
Vous voudrez bien sûr vous assurer que le tableau d'origine contient des valeurs sensibles.
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.