0

I am trying to remove the last characters of an element in an array only if they meet a condition. For example: if they end in s, then I remove the s. If not, the element should remain the same. This is how I'm trying to do it:

let myList = []
for (let i = 0; i < arrays.length; i++){
        if (arrays[i].substring(arrays[i].length - 1) == 's'){
        item = arrays[i].slice(0,-1);
        myList.push(item);
        }else{
            myList.push(arrays[i]);
        }

It's not working though, and idea why?

  • Can you add some input, and your expected output, as a [mcve], please. You can use the `[<>]` option in the edit window to create a snippet. – Andy Nov 19 '21 at 01:10
  • Please see [How do I chop/slice/trim off last character in string using Javascript?](/a/61786227/4642212). – Sebastian Simon Nov 19 '21 at 01:12

3 Answers3

0

this way

const 
  arr    = ['Johns','Paul', 'ringos', 'Georges']
, myList = arr.map( name => /s$/.test(name) ? name.slice(0, -1) : name)
  ;

console.log( myList )
Mister Jojo
  • 20,093
  • 6
  • 21
  • 40
0

If the name endsWith s then you can slice it as:

const arr = ["Johns", "Paul", "ringos", "Georges"];
const myList = arr.map(name => name.endsWith("s") ? name.slice(0, -1) : name);
console.log(myList);
DecPK
  • 24,537
  • 6
  • 26
  • 42
0

From the code you have write, it seems it lacks }. And if you wonder why nothing happen in the terminal, it's because you have not write console.log(myList) in your code. This code should works:

const arrays = ['Apples', 'Oranges', 'Bananas', 'Pear']
let myList = []
for (let i = 0; i < arrays.length; i++){
        if (arrays[i].substring(arrays[i].length - 1) == 's') {
        item = arrays[i].slice(0,-1);
        myList.push(item);
        } else {
            myList.push(arrays[i]);
        }
    }

console.log("List:", myList)