discardRange
discardRange
(range: Range) => (sequence: Sequence) => Sequence
Discard a range of indices
Ranges in Common FP are inclusive
const range = { startIdx: 1, endIdx: 2 } const discard2ndAnd3rd = discardRange(range) discard2ndAnd3rd(['a', 'b', 'c', 'd']) // is ['a', 'd'] discard2ndAnd3rd('abcd') // is 'ad' discard2ndAnd3rd(['a', 'b']) // is ['a']
const range = { startIdx: 1, endIdx: 2 } const discard2ndAnd3rd = discardRange(range) discard2ndAnd3rd(['a', 'b', 'c', 'd']) // is ['a', 'd'] discard2ndAnd3rd('abcd') // is 'ad' discard2ndAnd3rd(['a', 'b']) // is ['a']
const range = { startIdx: 1, endIdx: 2 } const discard2ndAnd3rd = discardRange(range) discard2ndAnd3rd(['a', 'b', 'c', 'd']) // is ['a', 'd'] discard2ndAnd3rd('abcd') // is 'ad' discard2ndAnd3rd(['a', 'b']) // is ['a']
const range = { startIdx: 1, endIdx: 2 } const discard2ndAnd3rd = discardRange(range) discard2ndAnd3rd(['a', 'b', 'c', 'd']) // is ['a', 'd'] discard2ndAnd3rd('abcd') // is 'ad' discard2ndAnd3rd(['a', 'b']) // is ['a']
Sometimes we want to remove a range of data. Below, we have three weeks of Liz's bowling scores. She can't make it Tuesdays and Wednesdays due to choir, so let's remove those.
const scores = [ ['monday', 'tuesday', 'wednesday', 'thursday', 'friday'], [188, 0, 0, 202, 156], [172, 0, 0, 190, 185], [206, 0, 0, 167, 191], ] const tueAndWed = { startIdx: 1, endIdx: 2 } const discardAbsentScores = discardRange(tueAndWed) const discardAllAbsentScores = mapValues(discardAbsentScores) const updatedScores = discardAllAbsentScores(scores) console.log(updatedScores) // is [ // ['monday', 'thursday', 'friday'], // [188, 202, 156], // [172, 190, 185], // [206, 167, 191], // ]
type Scores = [string[], ...number[][]] const scores: Scores = [ ['monday', 'tuesday', 'wednesday', 'thursday', 'friday'], [188, 0, 0, 202, 156], [172, 0, 0, 190, 185], [206, 0, 0, 167, 191], ] const tueAndWed = { startIdx: 1, endIdx: 2 } const discardAbsentScores = discardRange(tueAndWed)<string[] | number[]> const discardAllAbsentScores = mapValues(discardAbsentScores)<Scores> const updatedScores = discardAllAbsentScores(scores) as Scores console.log(updatedScores) // is [ // ['monday', 'thursday', 'friday'], // [188, 202, 156], // [172, 190, 185], // [206, 167, 191], // ]
const scores = [ [ 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', ], [188, 0, 0, 202, 156], [172, 0, 0, 190, 185], [206, 0, 0, 167, 191], ] const tueAndWed = { startIdx: 1, endIdx: 2 } const discardAbsentScores = discardRange(tueAndWed) const discardAllAbsentScores = mapValues( discardAbsentScores ) const updatedScores = discardAllAbsentScores(scores) console.log(updatedScores) // is [ // ['monday', 'thursday', 'friday'], // [188, 202, 156], // [172, 190, 185], // [206, 167, 191], // ]
type Scores = [string[], ...number[][]] const scores: Scores = [ [ 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', ], [188, 0, 0, 202, 156], [172, 0, 0, 190, 185], [206, 0, 0, 167, 191], ] const tueAndWed = { startIdx: 1, endIdx: 2 } const discardAbsentScores = discardRange( tueAndWed )<string[] | number[]> const discardAllAbsentScores = mapValues( discardAbsentScores )<Scores> const updatedScores = discardAllAbsentScores( scores ) as Scores console.log(updatedScores) // is [ // ['monday', 'thursday', 'friday'], // [188, 202, 156], // [172, 190, 185], // [206, 167, 191], // ]