Pergunta

Ok. então eu estou trabalhando em um aplicativo que recupera itens de uma db e constrói uma galeria. Eu fiz isso uma tonelada de vezes, e ele deve ser simples.

Eu estou correndo em problemas, porque nesta galeria, recebo resultados de um banco de dados que inclui os arquivos de imagem e outros arquivos. Vamos apenas dizer que eu não posso mudar nada, mas o flash, então eu preciso para detectar se é uma imagem, e só exibi-lo se ele é.

A minha pergunta é: Como é que eu posso excluir uma propriedade de um objeto sem o objeto ficar do mesmo tamanho? Eu uso uma função count () para gerar dados de paginação, para que eu possa não apenas 'nulo' eles, e como eu o entendo, delete () não é uma opção.

A minha solução para isso foi apenas para criar um outro objeto, filtrar os itens bons com um no loop, em seguida, pop-los em um outro objeto, mas cada item no objeto é um objeto, e não tenho nenhuma função push () para objetos.

Então, em desespero, eu estou usando um incremento para adicionar os objetos para o novo objeto usando um índice (goodItemsObject [índice] = allItemsObject [objeto]), mas que parece ser realmente uma maneira horrível de se locomover este problema.

Aqui está algum código:

var filteredMO = new Object();
var newFile = 0;
for each(var file in mediaObject){
if(check_file(file)){
    filteredMO[newFile] = file;
    newFile++;
}
}
mediaObject = filteredMO;

check_file () simplesmente retorna verdadeiro ou falso, mediaobject está toda cheia de objetos.

Eu prefiro muito mais estar fazendo isso:

for each(var file in mediaObject){
    if(check_file(file)){
         //remove_from_object_for_reals(mediaObject[file]);
    }
}

Eu percebo que pode não ser possível (seria jogar fora o loop for?), Mas algo semelhante seria doce. Eu adoraria ser capaz de deixar a garra gc todos esses objetos inúteis pendurado para fora.

todas as idéias?

graças,

Jesse

Foi útil?

Solução

O que você está usando para armazenar o objeto é agora chamado uma matriz associativa. Você não pode remover um valor-chave a partir de uma matriz associativa. O que você precisa é um dicionário (que AS3 tem uma build-in um http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.html ).

import flash.utils.Dictionary;

var dict:Dictionary = new Dictionary();

então você pode remover uma chave do seu dicionário chamando

delete dict["myKey"]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top