I have an array that needs to be filtered with specific condition
**Input** let arr=[ "abcde-backup", "abcde", "fghij-backup", "fghij", "klmnop-backup", "qrstuv" ] I am trying to achieve output like this **output** [ "abcde-backup", "fghij-backup", "klmnop-backup", "qrstuv" ]
If any value has -backup has suffix then it should take that and it should avoid the one without backup . Here
fghij-backup
has value with backup so that is the priority.If the value doesnt have backup has suffix then it should take it has priority
eg:qrstuv
I am struck with the second point . I have tried with this code
function getLatestJobId(){ let finalArr=[]; arr.forEach(val=>{ if(val.indexOf('-backup') > -1){ finalArr.push(val); } }) return finalArr; }
Advertisement
Answer
As per the explaination, the requirement is to filter out the words with -backup
as suffix.
In case the words don’t have the -backup
suffix, allow those words only when there is no alternative backup word present.
E.g.: For abcde
, since we already have abcde-backup
, don’t allow it in result. But, for qrstuv
, there is no backup alternative (qrstuv-backup
), so allow it.
So, the code for this would be as follow:
let arr=[ "abcde-backup", "abcde", "fghij-backup", "fghij", "klmnop-backup", "qrstuv" ] function getLatestJobId(){ return arr.filter(val => val.endsWith('-backup') || !arr.includes(`${val}-backup`)) } console.log(getLatestJobId())