Ir para conteúdo
Fórum Script Brasil
  • 0

Estrutura de Arrays ordenados em Javascript


Rafael Castelhano

Pergunta

Olá, estou montando uma aplicação que simula a operação de uma frota de veículos, onde cada veículo realiza "n" viagens, meu código em resumo está assim:

function Viagem(ciclo){
   this.inicioHora = 0, 
   this.inicioMinuto = 0, 
   this.terminoHora = 0, 
   this.terminoMinuto = 0;
...
}
function Carro(){
   this.viagens = [];//conjunto de viagens do carro
...
}
function Projeto(){
   this.carros = [];//conjunto de carros do projeto
...
}

Então eu crio um projeto que tem vários carros que por sua vez tem varias viagens.

Preciso criar uma forma de identificar qual a próxima viagem em relação a uma outra, por exemplo, minha viagem atual é 04:30, então o sistema identifica dentre os "n" carros do projeto qual a próxima viagem. Não preciso do valor em si, mais sim da posição do carro e da viagem que contem o próximo valor.

Qual seria a melhor forma de implementar essa lógica, lembrando que os valores das viagens não são apenas inseridos nos carros, eles mudam de acordo com a utilização do sistema..

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Não entendi o finalzinho do seu texto, mas, hmm, vê se isso aqui te ajuda:

function Viagem(ciclo) {
    this.inicioHora = 0,
    this.inicioMinuto = 0,
    this.terminoHora = 0,
    this.terminoMinuto = 0;


    // transformando hora:8, minuto:20 em 820 (por exemplo), para facilitar as comparações
    this.inicio = this.inicioHora * 100 + this.inicioMinuto;
    ...
}


function Carro() {
    this.viagens = []; //conjunto de viagens do carro
    ...
}




function Projeto() {
    this.carros = []; //conjunto de carros do projeto


    this.buscaProximaViagem(horaAtual, minutoAtual) {
            // transformando hora:15, minuto:3 em 1503 (por exemplo), pra facilitar as comparações
            var atual = horaAtual * 100 + minutoAtual;
            // preparando um vetor para receber todas as viagens depois da hora/minuto atual
            var proximas = [];
            // iterando todos os carros desse projeto
            for (var i = 0; i < this.carros.length; i++) {
                var carro = this.carros[i];
                // iterando todas as viagens desse carro
                for (var j = 0; j < carro.viagens.length; j++) {
                    var viagem = carro.viagens[j];
                    // verificando se essa viagem vai acontecer depois da hora/minuto atual
                    if (viagem.inicio > atual) proximas.push(viagem);
                }
            }
            // ordenando as proximas, da 'menor' (mais cedo) pra 'maior' (mais tarde)
            var emOrdem = proximas.sort(function(a, b) {
                return a.inicio - b.inicio;
            });
            // retornando a mais próxima de todas
            return emOrdem[0];
        }
        ...
}
Editado por fiote
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...