array et array d'objets

Par Manuel Alvarez-Iglisias, il y a 8 ans


Salut tous le monde !

Alors voilà mon problème, j'ai une liste d'object comme ceci (il y en a qui 2 dans l'exemple, mais à termes il y en aura beaucoup plus):

[ {"id":1, "nom":"Mol\u00e9cule 1", "dateCreation":{"date":"2017-07-05 15:08:51.000000","timezone_type":3,"timezone":"Europe\/Paris"}, "dateModif":{"date":"2017-07-17 11:30:54.000000","timezone_type":3,"timezone":"Europe\/Paris"} }, {"id":3," nom":"Mol\u00e9cule 2", "dateCreation":{"date":"2017-07-10 13:17:43.000000","timezone_type":3,"timezone":"Europe\/Paris"}, "dateModif":{"date":"2017-07-19 13:38:19.000000","timezone_type":3,"timezone":"Europe\/Paris"} } ]

et j'ai un tableau qui contient les ID :

[ [0] => 1, [1] => 3 ]

ce que j'aimerais obtenir c'est un tableau d'objects qui contiendrai les objects qui sont parmi les ID de mon tableau.

J'ai essayé en faisant :

var arrayMolecule = moleculesInputData.val().split("|"); var datas = []; $.each(arrayMolecule, function (idMolecule) { moleculesDatas.forEach(function (molecule) { if(parseInt(idMolecule) == molecule.id){ datas.push(molecule); } }) }) console.log(datas);

mais je n'obtiens que le premier élément... j'ai surement du rater quelque chose.
Merci d'avance pour l'aide.

2 réponses

Kenor, il y a 8 ans

Ton soucis vient de la mauvaise utilisation de $.each

En effet, le premier paramètre ne retourne pas la valeur mais la "key". Donc dans ton cas 0 et 1.

Tu as donc le retour de "1" (puisque tu as 1 et 3).

Donc :

$.each(arrayMolecule, function (key, idMolecule) {
fonctionnera

Manuel Alvarez-Iglisias, il y a 8 ans

Ah ben oui je suis bête haha ! merci !