mDiscardFirstWhile
mDiscardFirstWhile
(predicate: Predicate) => (anArray: array) => anArray
Discard the first elements that pass a condition
Consider discardFirstWhile instead.
This is for the uncommon case where mutatinganArray
is required.const lt3 = n => n < 3 const mDiscardFirstWhileLt3 = mDiscardFirstWhile(lt3) const arr = [1, 2, 3, 4] const mutatedArr = mDiscardFirstWhileLt3(arr) console.log(mutatedArr === arr) // is true console.log(arr) // is [3, 4]
const lt3 = (n: number) => n < 3 const mDiscardFirstWhileLt3 = mDiscardFirstWhile(lt3) const arr = [1, 2, 3, 4] const mutatedArr = mDiscardFirstWhileLt3(arr) console.log(mutatedArr === arr) // is true console.log(arr) // is [3, 4]
const lt3 = n => n < 3 const mDiscardFirstWhileLt3 = mDiscardFirstWhile(lt3) const arr = [1, 2, 3, 4] const mutatedArr = mDiscardFirstWhileLt3(arr) console.log(mutatedArr === arr) // is true console.log(arr) // is [3, 4]
const lt3 = (n: number) => n < 3 const mDiscardFirstWhileLt3 = mDiscardFirstWhile(lt3) const arr = [1, 2, 3, 4] const mutatedArr = mDiscardFirstWhileLt3(arr) console.log(mutatedArr === arr) // is true console.log(arr) // is [3, 4]
This is useful when we have sorted data and don't need to filter over all of it. Below, we want to remove bots from our online game. We assign a "human score" to each character every night. With the sorted character list, let's remove those with a low score.
const characters = [ { name: 'FireDragon', humanScore: 0 }, { name: 'YouDontGnome', humanScore: 5 }, { name: 'HeadlessNick', humanScore: 20 }, ] const isBot = ({ humanScore }) => humanScore < 10 const removeBots = mDiscardFirstWhile(isBot) removeBots(characters) console.log(characters) // is [ // { name: HeadlessNick, humanScore: 20 } // ]
type Character = { name: string humanScore: number } const characters: Character[] = [ { name: 'FireDragon', humanScore: 0 }, { name: 'YouDontGnome', humanScore: 5 }, { name: 'HeadlessNick', humanScore: 20 }, ] const isBot = ({ humanScore }: Character) => humanScore < 10 const removeBots = mDiscardFirstWhile(isBot) removeBots(characters) console.log(characters) // is [ // { name: HeadlessNick, humanScore: 20 } // ]
const characters = [ { name: 'FireDragon', humanScore: 0 }, { name: 'YouDontGnome', humanScore: 5 }, { name: 'HeadlessNick', humanScore: 20 }, ] const isBot = ({ humanScore }) => humanScore < 10 const removeBots = mDiscardFirstWhile(isBot) removeBots(characters) console.log(characters) // is [ // { name: HeadlessNick, humanScore: 20 } // ]
type Character = { name: string humanScore: number } const characters: Character[] = [ { name: 'FireDragon', humanScore: 0 }, { name: 'YouDontGnome', humanScore: 5 }, { name: 'HeadlessNick', humanScore: 20 }, ] const isBot = ({ humanScore }: Character) => humanScore < 10 const removeBots = mDiscardFirstWhile(isBot) removeBots(characters) console.log(characters) // is [ // { name: HeadlessNick, humanScore: 20 } // ]