Tenho um objeto javascript (na verdade, obtenho os dados por meio de uma solicitação ajax):
var data = {};
Eu adicionei algumas coisas nele:
data[0] = { "ID": "1"; "Status": "Valid" }
data[1] = { "ID": "2"; "Status": "Invalid" }
Agora, quero remover todos os objetos com status inválido (mas manter tudo na mesma ordem):
var tempData = {};
for ( var index in data ) {
if ( data[index].Status == "Valid" ) {
tempData.push( data );
}
}
data = tempData;
Em minha mente, tudo isso deve funcionar, mas estou recebendo um erro que tempData.push
não é uma função. Eu entendo por que não é o mesmo que um array, mas o que eu poderia fazer de outra forma?
javascript
json
Andrew Jackman
fonte
fonte
Respostas:
push()
é para matrizes , não objetos , portanto, use a estrutura de dados correta.fonte
for...in
loop também.Objetos não suportam a propriedade push, mas você também pode salvá-los usando o índice como chave,
Acho que é mais fácil remover o objeto se seu status for inválido, fazendo.
E, finalmente, você não precisa criar um var temp -
fonte
Você deve fazer
var tempData = new Array();
Push é uma função Array.
fonte
new Array()
e não[]
?[]
é a principal forma de criar arrays, as outras são alternativas e podem até ser sobrescritas.new Array()
mal éA linguagem de programação Javascript oferece suporte ao paradigma de programação funcional para que você possa fazer isso facilmente com esses códigos.
fonte
Eu presumo que REALMENTE você obtém o objeto do servidor e deseja obter o objeto na saída
Exibir trecho de código
fonte
Concordo com a resposta correta acima, mas .... você ainda não está fornecendo o valor do índice para os dados que deseja adicionar a tempData. Sem o valor [índice], todo o array será adicionado.
fonte
Faz :
fonte
new Array()
e não[]
?