J'ai un éventail d'objets appelés var alldates = {
"1991" : [object, object, object],
"1992" : [object, object],
//etc...
}
3 Réponses :
envisagez d'utiliser le Underscore.js Entrepriseby fonction, suivi de Sortby < / a>. Vous pouvez également combiner les deux comme ceci: p> < Pré> xxx pré> Selon votre cas d'utilisation, je peux voir les raisons d'utiliser un tableau de tableaux ou une carte d'objet des tableaux. Si vous recherchez l'index, utilisez définitivement la version ultérieure. P> P> groupy code> produira une structure comme
alldates code>, si vous l'appelez comme: p>
sortby code> peut être utilisé simplement pour trier par clé, comme celui-ci: p>
Cela a fonctionné fantastiquement. Merci! Je vais certainement avoir besoin d'utiliser les index plus tard.
Version javascript pure pour cela? Nous ne sommes pas autorisés à utiliser cette bibliothèque (Lodash)
Sans lodash ou une bibliothèque similaire, une solution basée sur Réduire code> Comme le de Naortor est le meilleur endroit pour début.
Une fois que vous avez les dates d'une structure qui ressemble à ceci:
var dateGroups = []; for(var year in allDates){ dateGroups[dateGroups.length] = allDates[year]; }
Une réponse à l'aide de la réduction.
var ans = objects.reduce(function(prev,curr) { if (!prev[curr.date.getFullYear()]) prev[curr.date.getFullYear()] = []; prev[curr.date.getFullYear()] = curr; return prev; },[]).reduce(function(prev,curr) { prev.push(curr); return prev; },[]);
Mieux vaut choisir JSON pour cela.
Quel type de structure JSON conviendrait-il au groupe par date?