dist/index.js
function findReplace (array, testFn) {
  const found = [];
  const replaceWiths = arrayify$1(arguments);
  replaceWiths.splice(0, 2);

  arrayify$1(array).forEach((value, index) => {
    let expanded = [];
    replaceWiths.forEach(replaceWith => {
      if (typeof replaceWith === 'function') {
        expanded = expanded.concat(replaceWith(value));
      } else {
        expanded.push(replaceWith);
      }
    });

    if (testFn(value)) {
      found.push({
        index: index,
        replaceWithValue: expanded
      });
    }
  });

  found.reverse().forEach(item => {
    const spliceArgs = [ item.index, 1 ].concat(item.replaceWithValue);
    array.splice.apply(array, spliceArgs);
  });

  return array
}
function findReplace (array, testFn) {
  const found = [];
  const replaceWiths = arrayify$1(arguments);
  replaceWiths.splice(0, 2);

  arrayify$1(array).forEach((value, index) => {
    let expanded = [];
    replaceWiths.forEach(replaceWith => {
      if (typeof replaceWith === 'function') {
        expanded = expanded.concat(replaceWith(value));
      } else {
        expanded.push(replaceWith);
      }
    });

    if (testFn(value)) {
      found.push({
        index: index,
        replaceWithValue: expanded
      });
    }
  });

  found.reverse().forEach(item => {
    const spliceArgs = [ item.index, 1 ].concat(item.replaceWithValue);
    array.splice.apply(array, spliceArgs);
  });

  return array
}
function findReplace ( array , testFn ) { const found = [ ] ; const replaceWiths = arrayify$1 ( arguments ) ; replaceWiths . splice ( 0 , 2 ) ; arrayify$1 ( array ) . forEach ( ( value , index ) => { let expanded = [ ] ; replaceWiths . forEach ( replaceWith => { if ( typeof replaceWith === 'function' ) { expanded = expanded . concat ( replaceWith ( value ) ) ; } else { expanded . push ( replaceWith ) ; } } ) ; if ( testFn ( value ) ) { found . push ( { index : index , replaceWithValue : expanded } ) ; } } ) ; found . reverse ( ) . forEach ( item => { const spliceArgs = [ item . index , 1 ] . concat ( item . replaceWithValue ) ; array . splice . apply ( array , spliceArgs ) ; } ) ; return array }
Find and either replace or remove items in an array.

@module find-replace
@example
> const findReplace = require('find-replace')
> const numbers = [ 1, 2, 3]

> findReplace(numbers, n => n === 2, 'two')
[ 1, 'two', 3 ]

> findReplace(numbers, n => n === 2, [ 'two', 'zwei' ])
[ 1, [ 'two', 'zwei' ], 3 ]

> findReplace(numbers, n => n === 2, 'two', 'zwei')
[ 1, 'two', 'zwei', 3 ]

> findReplace(numbers, n => n === 2) // no replacement, so remove
[ 1, 3 ]
 
@param {array} - The input array
@param {testFn} - A predicate function which, if returning `true` causes the current item to be operated on.
@param [replaceWith] {...any} - If specified, found values will be replaced with these values, else removed.
@returns {array}
@alias module:find-replace
Find and either replace or remove items in an array .