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
Réponse acceptée

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

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