0
votes

Problème de remplissage d'un tableau d'objets de manière dynamique en JavaScript

Je suis confronté à un problème lors de la collecte d'un tableau de l'objet de manière dynamique dans JavaScript. J'ai ces échantillons de données comme ci-dessous:

 Entrez la description de l'image ici p>

Je dois remplir les tableaux suivants avec les données ci-dessus: P>

var resultCount = results.features.length;
for (var i = 0; i < resultCount; i++) {
    var data = results.features[i].attributes;

    parisObj.value = data.Paris;
    londonObj.value = data.London;
    torontoObj.value = data.Toronto;

    if (data.Ind_ID === 101) {
        c1_Arr.push(parisObj);
        c1_Arr.push(londonObj);
        c1_Arr.push(torontoObj);
    }
}
console.log(c1_Arr);


1 commentaires

Veuillez aider les répondements potentiels en publiant un exemple de ce que vous attendez du résultat de votre fonction à ressembler. Affichez également les valeurs réelles des données d'entrée, pas seulement une capture d'écran, elle peut donc être copiée dans un extrait de code.


3 Réponses :


4
votes

Le problème est parce que même si vous avez la condition si vous y êtes, mais vous mettez à jour la valeur des objets dans la boucle et que vous avez déjà poussé les objets, vous avez toujours la référence dans les objets principaux. Ils sont écrasés.

Créer les 3 objets (Torontoobj, etc.) à l'intérieur de la boucle.


1 commentaires

Quelque chose comme ça var résultatcount = résultats.Features.length; pour (var i = 0; i



1
votes

Référence est mise à jour dans la deuxième itération (où ind_id strong> est 102)

Vous devez plutôt faire P>

var resultCount = results.features.length;
for (var i = 0; i < resultCount; i++) {
    var data = results.features[i].attributes;

    if (data.Ind_ID === 101) {
        parisObj.value = data.Paris;
        londonObj.value = data.London;
        torontoObj.value = data.Toronto;
        c1_Arr.push(parisObj);
        c1_Arr.push(londonObj);
        c1_Arr.push(torontoObj);
    }
}
console.log(c1_Arr);


0 commentaires

1
votes

Vos valeurs d'objet sont mises à jour, même après avoir été définie dans le si boucle, simplement parce que vous ne le limitez pas à être mis à jour.

Vous pouvez probablement faire l'une des 2 suivantes Choses:

  1. le plus simple:

    extraire les valeurs de Paris , london et toronto champs de DATA uniquement si le ind _ID est 101 .

    Comme ceci: xxx

    1. plus élégant:

      extraire l'élément de tableau qui correspond uniquement à votre condition, en d'autres termes filtre . xxx


2 commentaires

Le second est faux comme son itérant la même chose encore et encore. Vous pouvez dépendre la boucle et faire le code intérieur directement. Mais alors il y a une chance si l'identifiant n'existe pas.


oh ouais .. Merci de le pointer de la pointe.