zl程序教程

您现在的位置是:首页 >  其它

当前栏目

[Functional Programming] Discard the High and Low Values From an Array of Numbers with Ramda

The and of with from Array an Programming
2023-09-14 09:00:46 时间

In this lesson we'll see how to use the without function to remove items in a known list from an array. Then we'll generate our exclusion list and apply it to without using reduceminmax and converge to detect the highest and lowest values in an array and creating a new array that excludes those values.

 
import {without, min, max, reduce, converge, identity, equals} from 'ramda'

const getLowest = reduce(min, Number.MAX_VALUE)
const getHighest = reduce(max, Number.MIN_VALUE)
const getExcluded = converge((a, b) => [a, b], [getLowest, getHighest])

// From
const dropHighLow2 = numbers => {
  /*
  // version 1
  const lowest = getLowest(numbers)
  const highest = getHighest(numbers)
  return without([lowest, highest], numbers);
  */
  
  /*
  // version 2
  return without(getExcluded(numbers), numbers);
  */
  
  // version 3
  return converge(without, [getExcluded, identity])(numbers)
}

// To
const dropHighLow = converge(without, [getExcluded, identity])

const res = dropHighLow([1,2,3,4,5,6,7,8])
console.log(res, equals(res, [2,3,4,5,6,7]))