$ gnpm install find-replace
Replace or remove multiple items in an array.
Similar to array.prototype.splice() with the following differences:
splice
only operates on one item at a time requiring you to know its index. find-replace
will operate on every item satisfying the find function.replaceWith
argument, find-replace
will invoke it to compute the replacement value.import findReplace from 'find-replace'
const colours = ['red', 'white', 'blue', 'white']
const result = findReplace(
colours,
colour => colour === 'white',
'gold'
)
console.log(result)
// [ 'red', 'gold', 'blue', 'gold' ]
If the replaceWith
value is a function, it will be invoked with the found item and its result used as the replace value. For example:
const colours = ['red', 'white', 'blue', 'white']
const result = findReplace(
colours,
colour => colour === 'red',
colour => colour.split('')
)
console.log(result)
// [ 'r', 'e', 'd', 'white', 'blue', 'white' ]
This example explodes combined (-vrf
) into individual flags (-v -r -f
).
import findReplace from 'find-replace'
const argv = ['-vrf', 'file1.js', 'file2.js']
const combinedShortOptionRe = /^-[^\d-]{2,}$/
const result = findReplace(
argv,
arg => combinedShortOptionRe.test(arg),
arg => {
return arg
.slice(1) /* remove initial hypen */
.split('')
.map(letter => '-' + letter)
}
)
console.log(result)
Output:
$ node example/argv.mjs
[ '-v', '-r', '-f', 'file1.js', 'file2.js' ]
If you omit the third replaceWith
argument, all found items will be deleted.
import findReplace from 'find-replace'
const fruits = ['apple', 'pear', 'nectarine', 'pineapple', 'peach']
const bad = ['pear', 'pineapple']
const result = findReplace(
fruits,
fruit => bad.includes(fruit)
)
console.log(result)
Output:
$ node example/delete.mjs
[ 'apple', 'nectarine', 'peach' ]
array
⏏Kind: Exported function
Param | Type | Description |
---|---|---|
array | array |
The input array |
findFn | function |
A predicate function which, if returns true causes the current item to be operated on. |
[...replaceWith] | any |
If not specified, each found value will be removed. If specified, each found value will be replaced with this value. If the replaceWith value is a function, it will be invoked with the found value and its result used as the replace value. If the replaceWith function returns an array, the found value will be replaced with each item in the array (not replaced with the array itself). |
This library is compatible with Node.js, the Web and any style of module loader. It can be loaded anywhere, natively without transpilation.
Node.js (CommonJS):
const findReplace = require('find-replace')
Node.js (ECMAScript Module):
import findReplace from 'find-replace'
Modern browser (ECMAScript Module):
import findReplace from './node_modules/find-replace/dist/index.mjs'
Old browser (adds window.findReplace
):
<script nomodule src="./node_modules/find-replace/dist/index.js"></script>
© 2015-22 Lloyd Brookes <75pound@gmail.com>.
Isomorphic test suite by test-runner and web-runner. Documented by jsdoc-to-markdown.
Copyright 2013 - present © cnpmjs.org | Home |