3
respostas

Index.of

Bom dia, Pessoal como resolver o problema abaixo:

trocaDeLugar (array, array.indexOf(pivo), menores)
                           ^

TypeError: array.indexOf is not a function

3 respostas

Boa tarde, blz? Acredito que trocaDeLugar seja uma função, e você está passando os argumentos para ela. Se for isso, tente armazenar em uma variável o valor de array.indexOf(pivo), e passar essa variável como argumento.

O meu estava dando o mesmo erro, eu forcei a inicialização do argumento como Array e foi, quando gerava o TypeOf de array, ele estava vindo como undefined. Segue abaixo.

function encontraMenores(pivo, array = []) {
    let menores = 0;

    for (let atual = 0; atual < array.length; atual++) {
        let produtoAtual = array[atual];
        if (produtoAtual.preco < pivo.preco) {
            menores++;
        }
    }

    trocaLugar(array, array.indexOf(pivo), menores);
    return array;
}

Provavelmente isso deve ta ocorrendo pq a variável array não é um Array, era bom ver como tá sendo feita a chamada dessa função.

Até dá pra fazer como Nicolas falou, mas isso só faz com que o erro pare de aparecer, não corrigi o erro. Pode ser que acabe acarretando em um problema semântico e não resolva o problema que o algoritmo deveria resolver.