mKeepFirstWhile
mKeepFirstWhile
(predicate: Predicate) => (anArray: array) => anArray
Keep the first elements of an array that pass a condition
Consider keepFirstWhile instead.
This is for the uncommon case where mutatinganArray
is required.const lt3 = n => n < 3 const mKeepFirstWhileLt3 = mKeepFirstWhile(lt3) const arr = [1, 2, 3, 4] const mutatedArr = mKeepFirstWhileLt3(arr) console.log(mutatedArr === arr) // is true console.log(arr) // is [1, 2]
const lt3 = (n: number) => n < 3 const mKeepFirstWhileLt3 = mKeepFirstWhile(lt3) const arr = [1, 2, 3, 4] const mutatedArr = mKeepFirstWhileLt3(arr) console.log(mutatedArr === arr) // is true console.log(arr) // is [1, 2]
const lt3 = n => n < 3 const mKeepFirstWhileLt3 = mKeepFirstWhile(lt3) const arr = [1, 2, 3, 4] const mutatedArr = mKeepFirstWhileLt3(arr) console.log(mutatedArr === arr) // is true console.log(arr) // is [1, 2]
const lt3 = (n: number) => n < 3 const mKeepFirstWhileLt3 = mKeepFirstWhile(lt3) const arr = [1, 2, 3, 4] const mutatedArr = mKeepFirstWhileLt3(arr) console.log(mutatedArr === arr) // is true console.log(arr) // is [1, 2]
Sometimes we have ordered data and only care about the first elements. Below, we have students who sold magazine subscriptions, ordered by number sold. Students who sold ten or more get to ride a limo over lunch. Let's see who rides the limo.
const sellers = [ { name: 'phil', numSold: 15 }, { name: 'mary', numSold: 11 }, { name: 'sarah', numSold: 8 }, ] const soldAtLeast10 = ({ numSold }) => numSold >= 10 const keepRewardRecipients = mKeepFirstWhile(soldAtLeast10) keepRewardRecipients(sellers) const getNames = mapValues(get('name')) const rewardRecipients = getNames(sellers) console.log(rewardRecipients) // is [ // phil // mary // ]
type Seller = { name: string numSold: number } const sellers: Seller[] = [ { name: 'phil', numSold: 15 }, { name: 'mary', numSold: 11 }, { name: 'sarah', numSold: 8 }, ] const soldAtLeast10 = ({ numSold }: Seller) => numSold >= 10 const keepRewardRecipients = mKeepFirstWhile(soldAtLeast10) keepRewardRecipients(sellers) const getName = get('name')<Seller> const getAllNames = mapValues(getName)<Seller[]> const rewardRecipients = getAllNames(sellers) console.log(rewardRecipients) // is [ // phil // mary // ]
const sellers = [ { name: 'phil', numSold: 15 }, { name: 'mary', numSold: 11 }, { name: 'sarah', numSold: 8 }, ] const soldAtLeast10 = ({ numSold }) => numSold >= 10 const keepRewardRecipients = mKeepFirstWhile( soldAtLeast10 ) keepRewardRecipients(sellers) const getNames = mapValues(get('name')) const rewardRecipients = getNames(sellers) console.log(rewardRecipients) // is [ // phil // mary // ]
type Seller = { name: string numSold: number } const sellers: Seller[] = [ { name: 'phil', numSold: 15 }, { name: 'mary', numSold: 11 }, { name: 'sarah', numSold: 8 }, ] const soldAtLeast10 = ({ numSold }: Seller) => numSold >= 10 const keepRewardRecipients = mKeepFirstWhile( soldAtLeast10 ) keepRewardRecipients(sellers) const getName = get('name')<Seller> const getAllNames = mapValues(getName)<Seller[]> const rewardRecipients = getAllNames(sellers) console.log(rewardRecipients) // is [ // phil // mary // ]