Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cavalcantejean

Verificação de array

Recommended Posts

Como faço para verificar se dentro do meu array tem um campo que começa com determinado nome? Eu tentei fazer da seguinte forma:

for (var i in list) {
            if (list.test("Data") in list[i]) {
                var data = list[i].Data;
                var ano = data.substr(0, 4);
                var mes = data.substr(5, 2);
                var dia = data.substr(8, 2);

                var dataBr = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);

                list[i].Data = dataBr;
            }
        }

A ideia seria entrar no if somente se o array tiver algum campo que comece com Data, como no regex: Data*

isso eu uso para veificar converter as datas de todos os meus formulários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu faço assim

for (var i in list) {
            if ("Data" in list[i]) {
                var data = list[i].Data;
                var ano = data.substr(0, 4);
                var mes = data.substr(5, 2);
                var dia = data.substr(8, 2);

                var dataBr = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);

                list[i].Data = dataBr;
            }
        }

ele ajusta as datas no array que estão como Data, mas quando tem um campo DataInicio por exemplo em outro formulário, ele não ajusta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites
if ("Data" in list[i] || "DataInicio" in list[i]) {

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hm... então você quer buscar determinadas chaves para aplicar uma formatação de data?

Não é mais simples fazer uma função de formatação e, então, chama-las em cada chave no loop?


Posta a estrutura do teu objeto list. Ex.

var list = [
  {
    Data : '00/00/0000',
    DataInicio: '00/00/0000',
    Nome: 'string',
    ...
    ...
  },
  {
    Data : '00/00/0000',
    DataInicio: '00/00/0000',
    Nome: 'string',
    ...
    ...
  }
];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse list é uma estrutura que se adapta conforme a tabela requerida pelo formulário, servindo a todos os formulários. Por exemplo, no formulário x é requerida a coluna dataInicio,nome,endereco de uma tabela x, no formulário y é requerida a coluna data,nome,endereco de uma tabela y.

Pela dica do William Bruno, ficou assim:

for (var i in list) {
            if ("Data" in list[i] || "DataInicio" in list[i]) {
                var data = list[i].Data;
                var ano = data.substr(0, 4);
                var mes = data.substr(5, 2);
                var dia = data.substr(8, 2);

                var dataBr = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);

                list[i].Data = dataBr;
            }
        }

ficou dando erro na linha:

var data = list[i].Data;

Porque a Data não está em todos os formulários. O que eu fiz agora foi isso:

for (var i in list) {
            if ("Data" in list[i]) {
                var data = list[i].Data;
                var ano = data.substr(0, 4);
                var mes = data.substr(5, 2);
                var dia = data.substr(8, 2);

                var dataBr = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);

                list[i].Data = dataBr;
            } else {
                if ("DataInicioSolicitacao" in list[i]) {
                    var data = list[i].DataInicioSolicitacao;
                    var ano = data.substr(0, 4);
                    var mes = data.substr(5, 2);
                    var dia = data.substr(8, 2);

                    var dataBr = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);

                    list[i].DataInicioSolicitacao = dataBr;
                }
            }
        }

Não tem uma maneira melhor para fazer isso?

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum.. ainda vai ficar ruim:

 

for (var i in list) {
            if ("Data" in list[i] || "DataInicioSolicitacao" in list[i]) {
                var data = list[i].Data || list[i].DataInicioSolicitacao;
                var ano = data.substr(0, 4);
                var mes = data.substr(5, 2);
                var dia = data.substr(8, 2);

                var dataBr = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);

                list[i].Data = dataBr;
            }
        }
Mas menos pior do que duplicar código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi o que vc disse.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por exemplo o list de um formulario é assim [[iD:1, Nome: "João"],[iD:2, Nome: "José"],[iD:3, Nome: "Marcos"]]. Mas quando o usuário clica no Pesquisar, aparece uma tabela assim:

 

ID Nome

1 João

2 José

3 Marcos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, e?

 

Nada disso tem o menor contexto com a linha de código que eu postei.

vc testou ? deu certo ? deu errado ?(qual erro apareceu?)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu coloquei o seguinte código em um formulário que não tem Data no list:

for (var i in list) {
            if ("Data" in list[i] || "DataInicio" in list[i]) {
                var data = list[i].Data;
                var ano = data.substr(0, 4);
                var mes = data.substr(5, 2);
                var dia = data.substr(8, 2);

                var dataBr = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);

                list[i].Data = dataBr;
            }
        }

Apareceu o seguinte erro porque list daquele formulário não tem o Data:

 

"Uncaught TypeError: Cannot read property 'substr' of undefined"

 

Mas outros formulários utilizam o Data.

Como posso fazer para evitar que fique um if para cada campo de data que tem no banco, cada uma com um nome diferente.

Como posso evitar que o código fique assim:

for (var i in list) {
            if ("Data" in list[i] ) {
                var data = list[i].Data;
                var ano = data.substr(0, 4);
                var mes = data.substr(5, 2);
                var dia = data.substr(8, 2);

                var dataBr = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);

                list[i].Data = dataBr;
            } else {
                if ("DataInicioSolicitacao" in list[i]) {
                    var data = list[i].DataInicioSolicitacao;
                    var ano = data.substr(0, 4);
                    var mes = data.substr(5, 2);
                    var dia = data.substr(8, 2);

                    var dataBr = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);

                    list[i].DataInicioSolicitacao = dataBr;
                } else {
                    if ("DataCriacao" in list[i]) {
                        var data = list[i].DataCriacao;

                        var ano = data.substr(0, 4);
                        var mes = data.substr(5, 2);
                        var dia = data.substr(8, 2);

                        var dataBr = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);

                        list[i].DataCriacao = dataBr;                        
                    }
                    if("UltimoLogin" in list[i]){
                        var data = list[i].UltimoLogin;

                        var ano = data.substr(0, 4);
                        var mes = data.substr(5, 2);
                        var dia = data.substr(8, 2);

                        var dataBr = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);

                        list[i].UltimoLogin = dataBr;        
                    }
                }
            }
        } 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeira coisa que vc tem q fazer é parar de repetir código e isolar em uma função as partes repetidas.

 

Dai vc vai conseguir enxergar melhor o código e pensar em soluções mais bonitas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como? Eu tentei:

verificarList : function (list) {

for (var i in list) {
            if ("Data" in list[i] ) {
                var data = list[i].Data;
                var ano = data.substr(0, 4);
                var mes = data.substr(5, 2);
                var dia = data.substr(8, 2);

                var dataBr = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);

                list[i].Data = dataBr;
            }
}
}

Mas nem todos os formulários tem o Data no list

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

A parte "variavel" vira argumento da função.

 

verificarList : function (list, field) {

for (var i in list) {
            if (field in list[i] ) {
                var data = list[i][field];
                var ano = data.substr(0, 4);
                var mes = data.substr(5, 2);
                var dia = data.substr(8, 2);

                list[i][field] = dia + "/" + mes + "/" + ano + " " + data.substr(11, 8);
            }
}
}
entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.