discardLastWhile
discardLastWhile
(predicate: Predicate) => (anArray: array) => array
Discard last elements that pass a condition
const gt2 = n => n > 2 const discardLastWhileGt2 = discardLastWhile(gt2) discardLastWhileGt2([1, 2, 3, 4]) // is [1, 2] discardLastWhileGt2([3, 4, 1]) // is [3, 4, 1]
const gt2 = (n: number) => n > 2 const discardLastWhileGt2 = discardLastWhile(gt2)<number[]> discardLastWhileGt2([1, 2, 3, 4]) // is [1, 2] discardLastWhileGt2([3, 4, 1]) // is [3, 4, 1]
const gt2 = n => n > 2 const discardLastWhileGt2 = discardLastWhile(gt2) discardLastWhileGt2([1, 2, 3, 4]) // is [1, 2] discardLastWhileGt2([3, 4, 1]) // is [3, 4, 1]
const gt2 = (n: number) => n > 2 const discardLastWhileGt2 = discardLastWhile(gt2)< number[] > discardLastWhileGt2([1, 2, 3, 4]) // is [1, 2] discardLastWhileGt2([3, 4, 1]) // is [3, 4, 1]
This is useful when we have sorted data and don't need to filter over all of it. Below, we have a list of online players sorted by gold. Players with over 1,000 gold are obviously cheaters, so let's remove them.
const players = [ { name: 'meg', gold: 80 }, { name: 'tom', gold: 120 }, { name: 'ken', gold: 9001 }, { name: 'chris', gold: 9999 }, ] const discardCheaters = discardLastWhile(({ gold }) => gold > 1000) const updatedPlayers = discardCheaters(players) console.log(updatedPlayers) // is [ // { name: meg, gold: 80 } // { name: tom, gold: 120 } // ]
type Player = { name: string; gold: number } const players = [ { name: 'meg', gold: 80 }, { name: 'tom', gold: 120 }, { name: 'ken', gold: 9001 }, { name: 'chris', gold: 9999 }, ] const discardCheaters = discardLastWhile(({ gold }: Player) => gold > 1000)< Player[] > const updatedPlayers = discardCheaters(players) console.log(updatedPlayers) // is [ // { name: meg, gold: 80 } // { name: tom, gold: 120 } // ]
const players = [ { name: 'meg', gold: 80 }, { name: 'tom', gold: 120 }, { name: 'ken', gold: 9001 }, { name: 'chris', gold: 9999 }, ] const discardCheaters = discardLastWhile( ({ gold }) => gold > 1000 ) const updatedPlayers = discardCheaters(players) console.log(updatedPlayers) // is [ // { name: meg, gold: 80 } // { name: tom, gold: 120 } // ]
type Player = { name: string; gold: number } const players = [ { name: 'meg', gold: 80 }, { name: 'tom', gold: 120 }, { name: 'ken', gold: 9001 }, { name: 'chris', gold: 9999 }, ] const discardCheaters = discardLastWhile( ({ gold }: Player) => gold > 1000 )<Player[]> const updatedPlayers = discardCheaters(players) console.log(updatedPlayers) // is [ // { name: meg, gold: 80 } // { name: tom, gold: 120 } // ]