Je le tableau suivant:groupe Array par deux fois et compter occurences
var array = [
{ idOne: 1, oneText: 'one', idTwo: 2, twoText: 'two' },
{ idOne: 1, oneText: 'one', idTwo: 2, twoText: 'two' },
{ idOne: 12, oneText: 'twelve', idTwo: 23, twoText: 'twentythree' },
{ idOne: 12, oneText: 'twelve', idTwo: 23, twoText: 'twentythree' },
{ idOne: 12, oneText: 'twelve', idTwo: 25, twoText: 'twentyfive' },
{ idOne: 16, oneText: 'sixteen', idTwo: 56, twoText: 'fiftysix' },
{ idOne: 16, oneText: 'sixteen', idTwo: 56, twoText: 'fiftysix' },
{ idOne: 16, oneText: 'sixteen', idTwo: 56, twoText: 'fiftysix' },
{ idOne: 16, oneText: 'sixteen', idTwo: 50, twoText: 'fifty' },
{ idOne: 16, oneText: 'sixteen', idTwo: 50, twoText: 'fifty' },
{ idOne: 18, oneText: 'eighteen', idTwo: 90, twoText: 'ninety' }
];
Je suis en train de les regrouper d'abord par Idone, puis par idTwo, et compter combien d'entre eux se trouvent, et puis trier les:
J'ai actuellement la méthode suivante:
var result = _.chain(array)
.groupBy("idOne")
.map(function(idOne, idOneKey) {
return _.chain(idOne)
.groupBy("idTwo")
.map(function(idTwo, idTwoKey) {
return {
id: idOneKey + '-' + idTwoKey
}
})
.value();
})
.value();
Mais je veux retourner le tableau suivant ou un objet, pas sûr serait le mieux:
result = {
'one-two': 2,
'twelve-twentythree': 2,
'twelve-twentyfive': 1,
'sixteen-fiftysix': 3
...
}
Il ne doit pas être avec underscore ou lodash, juste ce qu'il fonctionne.
est une solution JS native permis? – RomanPerekhrest
Je l'implémente dans une application de réaction, donc tout ce qui fonctionne vraiment ... –
ne voudriez-vous pas un objet avec une structure comme: {[idOne]: {[idTwo]: {object}}}? essentiellement une carte de cartes pour les objets? – bryan60