nostalgieing
Messages postés50Date d'inscriptionlundi 22 mars 2010StatutMembreDernière intervention10 avril 2014
-
15 oct. 2012 à 19:17
pmcoste
Messages postés72Date d'inscriptionmercredi 7 février 2007StatutMembreDernière intervention25 juillet 2013
-
16 oct. 2012 à 19:07
Bonjour,
je suis débutante en developpement extjs, mon problème est: j'ai un store contenant des données dont on peut trouver des duplications comme cet exemple:
var store = Ext.create('Ext.data.JsonStore', {
fields: ['id','name' ],
data: [
{'id':1,'name':'name1'},
{'id':2,'name':'name2' },
{'id':3,'name':'name2'},
{'id':4,'name':'name1'},
{'id':5,'name':'name3'}
]
});
je veux appliquer un filtre a ce store afin d'extraire dans un autre store(array...) la valeur du champ 'name' et le nombre d'occurrences de chaque valeur de ce champs
comme ce exemple var array=[
{'name1, 2},
{'name2, 2},
{'name3, 1}
]
J'ai pas pu faire ça et j'ai besoin de votre aide c'est urgent
pmcoste
Messages postés72Date d'inscriptionmercredi 7 février 2007StatutMembreDernière intervention25 juillet 20131 16 oct. 2012 à 19:07
Bonjour,
Le principe est simple : il suffit de créer un tableau dans lequel tu mets tes objets s'ils ne sont pas créés et sinon, tu le mets.
Exemple :
//Voici ton tableau de store
var store = {
fields: ['id','name' ],
data: [
{id:1,name:'name1'},
{id:2,name:'name2'},
{id:3,name:'name2'},
{id:4,name:'name1'},
{id:5,name:'name3'}
]
};
//Déclaration de ton tableau groupé
var dataGroup=[];
//Pour chaque store, je regarde s'il existe. S'il existe, j'ajoute 1, sinon je le créé
for(var i=0;i<store.data.length;i++)
{
var j=0;
var bFound=false;
//Je parcours mon tableau groupé tant que je ne suis pas à la fin et tant que je n'ai pas trouvé mon store
while(j<dataGroup.length && !bFound)
{
if(dataGroup[j].name==store.data[i].name) {
//Cool, j'ai trouvé mon store, j'ajoute 1 !
dataGroup[j].nb++;
//Et je lui dis que j'ai trouvé
bFound=true;
}
else {
//Pas encore trouvé, je poursuis la recherche de mon tableau
j++;
}
}
//Mon store n'a pas encore été ajouté, je le mets
if(!bFound) {
dataGroup.push({name:store.data[i].name, nb:1});
}
}
//et pour vérifier, je parcours tout mon tableau et j'affiche le nombre
for(var i=0;i<dataGroup.length;i++)
{
alert(dataGroup[i].name+" : "+dataGroup[i].nb);
}