1
resposta

Estou recebendo o erro "TypeError: array.indexOf is not a function"

Insira aqui a descrição dessa imagem para ajudar na acessibilidade


const listaLivros = require('./array');

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;
}

function trocaLugar(array, de, para) {
  const elem1 = array[de]
  const elem2 = array[para]

  array[para] = elem1
  array[de] = elem2
}

function divideNoPivo(array) {
  let pivo = array[Math.floor(array.length / 2)];
  encontraMenores(pivo, array);
  let valoresMenores = 0;

  for(let analisando = 0; analisando < array.length; analisando++) {
    let atual = array[analisando];
    if(atual.preco <= pivo.preco && atual !== pivo) {
      trocaLugar(array, analisando, valoresMenores)
      valoresMenores++
    }
  }

  return array;
}


// console.log(divideNoPivo(listaLivros));
console.log(encontraMenores(listaLivros[2], listaLivros));

module.exports = trocaLugar;
1 resposta

Oi, Kevin, tudo bem?

O erro está indincando que, na linha 13 do seu código, array.indexOf não é uma função. Esse erro aparece quando tentamos utilizar um método de array (nesse caso, indexOf) em uma variável que na verdade não é um array, e por isso esse método não é definido.

Vi que o array que você está tentando utilizar é o listaLivros importado do caminho "./array". Verifique se o arquivo array.js está na mesma pasta que o seu arquivo JavaScript e se ele está exportando um array corretamente. Em caso de dúvidas, pode mandar o código do arquivo array.js aqui.

Você também pode dar um console.log(array) dentro da função encontraMenores logo antes da linha 13 para sabermos que valor essa variável está guardando.

Fico no aguardo!