126 votes

Fonction JavaScript (push) d'objets

J'ai un objet javascript (en fait, je reçois les données via une requête ajax):

var data = {};

J'ai ajouté quelques trucs dedans:

data[0] = { "ID": "1"; "Status": "Valid" }
data[1] = { "ID": "2"; "Status": "Invalid" }

Maintenant, je veux enlever tous les objets avec un état non valide (mais gardez tout de la commande même):

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 que tempData.push n'est pas une fonction. Je comprends pourquoi il n'est pas le même comme un tableau, mais que pouvais-je faire autrement?

159voto

Matt Ball Points 165937

push() est pour les tableaux , pas les objets , utilisez donc la bonne structure de données.

 var data = [];
// ...
data[0] = { "ID": "1", "Status": "Valid" };
data[1] = { "ID": "2", "Status": "Invalid" };
// ...
var tempData = [];
for ( var index=0; index<data.length; index++ ) {
    if ( data[index].Status == "Valid" ) {
        tempData.push( data );
    }
}
data = tempData;
 

6voto

Alex Dn Points 2087

Vous devez faire var tempData = new Array();

Push est une fonction de tableau.

-2voto

Sudhir Points 50854

Faire :



var data = new Array();
var tempData = new Array();
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X