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

"next" e "prev" do PHP para o JS


Diego.G.A

Pergunta

Ai galera eu tava fazendo um sistema aqui e acabei por precisar de usar uma função estilo "next" e "prev" do php, ai eu fui procurar mas todas os scripts que eu encontrava so aceitavam se o indice do array fosse com numeros, mas como o indice do meu array não era formado por numeros eu por criei as funções em "next" e "prev" do PHP para o JS e estou disponoibilizando p/ vocês aqui no fórum.

/*
/* Funções desemvolvidas por Diego.G.A
/* Site: www.oxnoth.com
*/

// funções "next" e "prev" para arrays
// FUNÇÂO next()
function next(arrayAtual,chaveArrayAtual) {
    var i = 0;
    var next;
    var u;
    for(var chave in arrayAtual) {
        if(chave == chaveArrayAtual) {
            var u = i;
            var next = i + 1;
            var prev = i - 1;
        }
        i++;
    }
    var y = 0;
    for(var key in arrayAtual) {
        if((u + 1) == next) {
            if(y == next) {
                return key; // retorn a chave do array anterior
            }
            y++;
        }
    }
}
// FUNÇÂO prev()
function prev(arrayAtual,chaveArrayAtual) {
    var i = 0;
    var prev;
    var u;
    for(var chave in arrayAtual) {
        if(chave == chaveArrayAtual) {
            var u = i;
            var prev = i - 1;
        }
        i++;
    }
    var v = 0;
    for(var key in arrayAtual) {
        if((u - 1) == prev) {
            if(v == prev) {
                return key; // aqui ele return a chave do array posterior
            }
            v++;
        }
    }
}

ta ai espero que fassam bom proveito delas.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Ahhh boa Diego!!!

Então encontrou a solução pro seu problema hein!

Eu não sabia se a minha dica lá tinha adiantado de alguma coisa, achei que você tinha remontado o seu algoritmo....

Posso dar uma sugestão? Reutilize o seu código, as duas funções fazem a mesma coisa quase...

Usei a lógica que você mesmo desenvolveu, dá uma olhada:

function showIndex(arr, ind, act){

var aux=[]
var indice=null

    for(var chave in arr){
      if(chave==ind) indice=aux.length
      aux[aux.length]=chave
    }

    if(indice!=null){

        if(act == "prev" && indice!=0)
        return aux[indice-1]
        else if(act =="next" && indice!=(aux.length-1))
        return aux[indice+1]
    }

    switch(indice){
    case (0): return "Elemento não tem anterior"
    case (aux.length-1): return "Elemento não tem posterior"
    case (null): return "Não existe a chave"
    }

}

Dessa forma você só usa uma função, acaba economizando código. O switch final é só pra retornar erros pra você saber o que acontece, porque se você tentar pegar o elemento anterior ao do primeiro a função retorna indefinido. A mesma coisa acontece se quiser pegar o elemento posterior ao último.

Muito boa a sua solução!! Parabéns.

Akelabrasssss

Link para o comentário
Compartilhar em outros sites

  • 0

Ai valeu e boa esse teu code também eu vou criar para ele fazer um loop no array

tipo quando ele não encontrar mas nenhum elemento no final do array ele pula para o primeiro e conseqüentemente com o primeiro para o ultimo.

e ai apliquei ela em um modo json que vai ficar em uma pg externa pra ficar mais facil, já que o js não tem a capacidade de criar classes

como outras linguagens.

aqui vai o code:

/*
/* Funções desemvolvidas por Diego.G.A
/* Site: www.oxnoth.com
*/


var oxnoth = new Object();
oxnoth = {
    array: {
        next: function(arrayAtual, chaveArrayAtual) {
            var i = 0;
            var next;
            var u;
            for(var chave in arrayAtual) {
                if(chave == chaveArrayAtual) {
                    var u = i;
                    var next = i + 1;
                    var prev = i - 1;
                }
                i++;
            }
            var y = 0;
            for(var key in arrayAtual) {
                if((u + 1) == next) {
                    if(y == next) {
                        return key; // retorn a chave do array anterior
                    }
                    y++;
                }
            }
        }, // FIM->função "next()"
        prev: function(arrayAtual, chaveArrayAtual) {
            var i = 0;
            var prev;
            var u;
            for(var chave in arrayAtual) {
                if(chave == chaveArrayAtual) {
                    var u = i;
                    var prev = i - 1;
                }
                i++;
            }
            var v = 0;
            for(var key in arrayAtual) {
                if((u - 1) == prev) {
                    if(v == prev) {
                        return key; // aqui ele return a chave do array posterior
                    }
                    v++;
                }
            }
        } // FIM->função "prev()"
    }, // FIM->funções para array
    global: {
        $: function(ID) {
            return document.getElementyById(ID);
        }, // FIM->função "$()"
        $$: function(ID) {
            return document.getElementyById(ID).value;
        } // FIM->função "$$()"
    } // FIM->funções globais
}

os modos de acessar elas são

oxnoth.array.next(arrayAtual, chaveArrayAtual);

oxnoth.array.prev(arrayAtual, chaveArrayAtual);

oxnoth.global.$(ID);

oxnoth.global.$$(ID);

ai e saca que o usuário pode usar apenas uma no teu caso ele usa as duas de uma so vez mais ta bem menor o code ai fica bacana.

valeu ai pelo coment sobre meu code.

Editado por Diego.G.A
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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...