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?
CodePudding user response:
this way
const
arr = ['Johns','Paul', 'ringos', 'Georges']
, myList = arr.map( name => /s$/.test(name) ? name.slice(0, -1) : name)
;
console.log( myList )
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>
CodePudding user response:
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);
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>
CodePudding user response:
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)
<iframe name="sif3" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>