Home > Net >  Check string elements in an array to manipulate
Check string elements in an array to manipulate

Time:02-15

I have the following array returning from a service

indexLabelServices = [ ' Pear', ' Apple', ' Banana',' Peach',' Orange',' Cherry' ]

For each element of the array i want to give a different label ( translation )

This is my code

  const convertServicesLabels = (indexLabelServices) => {
    let label="";
    for (let index = 0; index < indexLabelServices.length;   index) {
      const element = indexLabelServices[index];
      if(element === " Pear){
        label=Pera;
      }else  if(element ===" Apple"){
        label=Mela;
      }else  if(element ===" Banana"){
        label=Platano;
      }else  if(element ===" Peach"){
        label=Pesca
      }else  if(element ===" Orange"){
        label=Arancia;
      }else  if(element ===" Cherry"){
        label=Ciliegia;
      }
    }
    return label;
  }

The result i have with this method is that the only the element Orange is translated to Arancia, not others element get transalated.

What am i doing wrong? How can i manipulate/translate any element of the array indexLabelServices ?

CodePudding user response:

you are only returning the last element you are storing in label not mutating the array, try using map over the list.

let indexLabelServices = [' Pear', ' Apple', ' Banana', ' Peach', ' Orange', ' Cherry']

indexLabelServices = indexLabelServices.map(element => {
  if (element === " Pear"){
    return "Pera";
  } else if (element === " Apple") {
    return "Mela";
  } else if (element === " Banana") {
    return "Platano";
  } else if (element === " Peach") {
    return "Pesca"
  } else if (element === " Orange") {
    return "Arancia";
  } else if (element === " Cherry") {
    return "Ciliegia";
  }
})

console.log(indexLabelServices)

CodePudding user response:

The problem is located within a for loop where you every iteration rewrite variable label. Another problem is iterating over that array. When you do index then variable index increment before enter the for loop body so instead try to use index . In this case will be index increment after one iteration of for loop.

If you need to return array of all translation edit your code to something like this:

  let indexLabelServices = [ ' Pear', ' Apple', ' Banana',' Peach',' Orange',' Cherry' ];
  
  const convertServicesLabels = (indexLabelServices) => {
    let translations = [];
    for (let index = 0; index < indexLabelServices.length; index  ) {
      const element = indexLabelServices[index];
      if(element === " Pear"){
          translations[index] = 'Pera';
      }
      else if(element ===" Apple"){
          translations[index] = 'Mela';
      }
      else if(element ===" Banana"){
         translations[index] = 'Platano';
      }
      else if(element ===" Peach"){
          translations[index] = 'Pesca';
      }
      else if(element ===" Orange"){
          translations[index] = 'Arancia';
      }
      else if(element ===" Cherry"){
          translations[index] = 'Ciliegia';
      }
    }
    return translations;
  }
  
  console.log(convertServicesLabels(indexLabelServices));

  • Related