import { includes, curry, addIndex, reject } from 'ramda'; // helpers const rejectIndexed = addIndex(reject); const containsIndex = curry((indexes, val, index) => includes(index, indexes)); /** * Returns a partial copy of an array omitting the indexes specified. * * @func omitIndexes * @memberOf RA * @since {@link https://char0n.github.io/ramda-adjunct/1.19.0|v1.19.0} * @category List * @sig [Int] -> [a] -> [a] * @see {@link http://ramdajs.com/docs/#omit|R.omit}, {@link RA.pickIndexes|pickIndexes} * @param {!Array} indexes The array of indexes to omit from the new array * @param {!Array} list The array to copy from * @return {!Array} The new array with omitted indexes * @example * * RA.omitIndexes([-1, 1, 3], ['a', 'b', 'c', 'd']); //=> ['a', 'c'] */ const omitIndexes = curry((indexes, list) => rejectIndexed(containsIndex(indexes), list) ); export default omitIndexes;