J'ai un objet javascript (j'obtiens en fait les données via une requête ajax):
var data = {};
J'y ai ajouté des trucs:
data[0] = { "ID": "1"; "Status": "Valid" }
data[1] = { "ID": "2"; "Status": "Invalid" }
Maintenant, je veux supprimer tous les objets avec un statut invalide (mais garder tout le même ordre):
var tempData = {};
for ( var index in data ) {
if ( data[index].Status == "Valid" ) {
tempData.push( data );
}
}
data = tempData;
Dans mon esprit, tout cela devrait fonctionner, mais j'obtiens une erreur qui tempData.push
n'est pas une fonction. Je comprends pourquoi ce n'est pas la même chose qu'un tableau, mais que pourrais-je faire autrement?
javascript
json
Andrew Jackman
la source
la source
Réponses:
push()
est pour les tableaux , pas pour les objets , utilisez donc la bonne structure de données.la source
for...in
boucle aussi.Objects ne prend pas en charge la propriété push, mais vous pouvez également l'enregistrer en utilisant l'index comme clé,
Je pense que c'est plus facile si vous supprimez l'objet si son statut est invalide, en le faisant.
Et enfin, vous n'avez pas besoin de créer un var temp -
la source
Vous devez faire
var tempData = new Array();
Push est une fonction Array.
la source
new Array()
et pas[]
?[]
est le principal moyen de créer des tableaux, les autres sont des alternatives et peuvent même être écrasés.new Array()
malLe langage de programmation Javascript prend en charge le paradigme de programmation fonctionnelle afin que vous puissiez facilement utiliser ces codes.
la source
Je suppose que VRAIMENT vous obtenez un objet du serveur et que vous voulez obtenir un objet en sortie
Afficher l'extrait de code
la source
Je suis d'accord avec la bonne réponse ci-dessus, mais .... vous ne donnez toujours pas la valeur d'index pour les données que vous souhaitez ajouter à tempData. Sans la valeur [index], tout le tableau sera ajouté.
la source
Faire :
la source
new Array()
et pas[]
?