How to know how many times a word repeats in the array and,from the return of a function that calculates this,do new calculations?(JS)

Asked

Viewed 542 times

-1

I need to do a function that returns how many times the car board appears in the array and use this return in another function to determine a calculation.

That’s my code and it’s printing "0"

 var placas = [
   'RXB-2525', 'AKX-3333', 'ORO-7142','RXB-2525', 'AKX-3333', 'ORO-7142',
   'AKX-3333', 'RXB-2525', 'AKX-3333','AKX-3333', 'RXB-2525', 'AKX-3333',
   'RXB-2525','AKX-3333','ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'ORO-7142', 'ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'AKX-3333', 'RXB-2525','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'ORO-7142', 'ORO-7142','AKX-3333', 'ORO-7142', 'ORO-7142',
   'ORO-7142', 'RXB-2525', 'AKX-3333','AKX-3333', 'ORO-7142', 'ORO-7142',
   'AKX-3333', 'RXB-2525', 'AKX-3333','AKX-3333', 'RXB-2525', 'AKX-3333',
   'RXB-2525', 'AKX-3333', 'ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'ORO-7142', 'ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
  'AKX-3333', 'AKX-3333', 'RXB-2525','AKX-3333', 'AKX-3333', 'RXB-2525'];

var numeroDeEntradas = 0;
var pagamentoUm = 0;
var pagamentoDois = 0;

function calcularNumeroDeEntradas(placa){
   
   for (var i = 0; i < placas.length;i++){
      if (placas[i]==placas[i]){
      return   numeroDeEntradas++;
      }

   }
   
}
 
function calcularValorDevido(placa){
   
   if (calcularNumeroDeEntradas(placa)<=20){
      pagamentoUm = 20*calcularNumeroDeEntradas(placa)
   
   } else if (calcularNumeroDeEntradas(placa) >=20) {
       
       pagamentoDois= pagamentoUm +(5*(calcularNumeroDeEntradas(placa)-20))

   }
}

console.log(calcularNumeroDeEntradas(placas))

console.log(calcularValorDevido(placas))

"paymentUm" and "paymentDois" is the amount to be paid depending on the number of times the board repeats.

  • placas[i]==placas[i] Shouldn’t that always be the same? It’s like asking 1==1... should just add, and return the variable numeroDeEntradas at the end of the function, after the for

  • can’t understand what exactly you want in the calculator functionValue on the if Else part. No sense in paying.

1 answer

0

Using Array.foreach method:

 var placas = [
   'RXB-2525', 'AKX-3333', 'ORO-7142','RXB-2525', 'AKX-3333', 'ORO-7142',
   'AKX-3333', 'RXB-2525', 'AKX-3333','AKX-3333', 'RXB-2525', 'AKX-3333',
   'RXB-2525','AKX-3333','ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'ORO-7142', 'ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'AKX-3333', 'RXB-2525','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'ORO-7142', 'ORO-7142','AKX-3333', 'ORO-7142', 'ORO-7142',
   'ORO-7142', 'RXB-2525', 'AKX-3333','AKX-3333', 'ORO-7142', 'ORO-7142',
   'AKX-3333', 'RXB-2525', 'AKX-3333','AKX-3333', 'RXB-2525', 'AKX-3333',
   'RXB-2525', 'AKX-3333', 'ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'ORO-7142', 'ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
  'AKX-3333', 'AKX-3333', 'RXB-2525','AKX-3333', 'AKX-3333', 'RXB-2525'];

function calcularNumeroDeEntradas(array, value) {
    var count = 0;
    array.forEach((v) => (v === value && count++));
    return count;
}

console.log(calcularNumeroDeEntradas(placas, 'RXB-2525'));
console.log(calcularNumeroDeEntradas(placas, 'AKX-3333')); 

Using array.filter method:

 var placas = [
   'RXB-2525', 'AKX-3333', 'ORO-7142','RXB-2525', 'AKX-3333', 'ORO-7142',
   'AKX-3333', 'RXB-2525', 'AKX-3333','AKX-3333', 'RXB-2525', 'AKX-3333',
   'RXB-2525','AKX-3333','ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'ORO-7142', 'ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'AKX-3333', 'RXB-2525','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'ORO-7142', 'ORO-7142','AKX-3333', 'ORO-7142', 'ORO-7142',
   'ORO-7142', 'RXB-2525', 'AKX-3333','AKX-3333', 'ORO-7142', 'ORO-7142',
   'AKX-3333', 'RXB-2525', 'AKX-3333','AKX-3333', 'RXB-2525', 'AKX-3333',
   'RXB-2525', 'AKX-3333', 'ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'ORO-7142', 'ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
  'AKX-3333', 'AKX-3333', 'RXB-2525','AKX-3333', 'AKX-3333', 'RXB-2525'];



function calcularNumeroDeEntradas(array, value) {
    return array.filter((v) => (v === value)).length;
}

    console.log(calcularNumeroDeEntradas(placas, 'RXB-2525'));
    console.log(calcularNumeroDeEntradas(placas, 'AKX-3333'));

using this return in another function to determine a calculation

 var placas = [
   'RXB-2525', 'AKX-3333', 'ORO-7142','RXB-2525', 'AKX-3333', 'ORO-7142',
   'AKX-3333', 'RXB-2525', 'AKX-3333','AKX-3333', 'RXB-2525', 'AKX-3333',
   'RXB-2525','AKX-3333','ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'ORO-7142', 'ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'AKX-3333', 'RXB-2525','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'ORO-7142', 'ORO-7142','AKX-3333', 'ORO-7142', 'ORO-7142',
   'ORO-7142', 'RXB-2525', 'AKX-3333','AKX-3333', 'ORO-7142', 'ORO-7142',
   'AKX-3333', 'RXB-2525', 'AKX-3333','AKX-3333', 'RXB-2525', 'AKX-3333',
   'RXB-2525', 'AKX-3333', 'ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
   'AKX-3333', 'ORO-7142', 'ORO-7142','AKX-3333', 'AKX-3333', 'RXB-2525',
  'AKX-3333', 'AKX-3333', 'RXB-2525','AKX-3333', 'AKX-3333', 'RXB-2525'];

function calcularNumeroDeEntradas(array, value) {
    var count = 0;
    array.forEach((v) => (v === value && count++));
    return count;
}



function calcularValorDevido(quantidade){

   if (quantidade<=20){
      pagamento = 20*quantidade;
   
   } else if (quantidade >=20) {
       
       pagamento= 20*quantidade +(5*(quantidade-20))

   }
   console.log(pagamento);
}

var quant =(calcularNumeroDeEntradas(placas, 'AKX-3333'));

calcularValorDevido(quant);



 

Browser other questions tagged

You are not signed in. Login or sign up in order to post.