4
respostas

[Bug] Type error

Estou fazendo esse curso usando a versão v18.17.0 do node. Porém eu estou recebendo esse erro no console do navegador, detalhe que estou usando o mesmo código que o professor.

TypeError: items.reduce is not a function
    at sumItemsValue (service.js:12:9)
    at operators.js:4:44
    at Array.reduceRight (<anonymous>)
    at operators.js:4:9

Como eu posso resolver esse erro ? É por causa da minha versão do node?

4 respostas

Este erro acontece geralmente quando você tenta usar reduce em uma variável que não possui um array dentro. Como este exemplo:

Codigo:

const item = "A";
item.reduce("");

Error:

TypeError: item.reduce is not a function

Voce deve usar o reduce em um array de numero seguindo a estrutura abaixo:

const array1 = [1, 2, 3, 4];

// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumWithInitial = array1.reduce(
  (accumulator, currentValue) => accumulator + currentValue,
  initialValue,
);

console.log(sumWithInitial);
// Expected output: 10

Seria interessante postar também o código que está com erro ( linha 12 do service.js) para podermos avaliar e te ajudar.

Oi Cleber, tudo bem ? A linha é assim const sumItemsValue = items => items.reduce((total, item) => total + item.valor, 0);

Vitoria verifiquei aqui q realmente não tem nada de errado no código e como dito pelo João provavelmente o parâmetro items não é um array.

items tem q retornar um array de objetos, no curso items tem que ser esse array de objetos:

[{codigo: '2143', valor: 200},{codigo: '2143', valor: 280},{codigo: '2143', valor: 110}];

Você pode colocar um console.log na função só pra ver no inspecionar do Browser (f12 no chrome) oque items está retornando:

const sumItemsValue = items => {console.log(items);items.reduce((total, item) => total + item.valor, 0)}