diff --git a/snippets/pullAtValue.md b/snippets/pullAtValue.md new file mode 100644 index 000000000..64798068f --- /dev/null +++ b/snippets/pullAtValue.md @@ -0,0 +1,24 @@ +### pullAtValue + +Mutates the original array to filter out the values specified. Returns the removed elements. + +Use `Array.filter()` and `Array.includes()` to pull out the values that are not needed. +Use `Array.length = 0` to mutate the passed in array by resetting it's length to zero and `Array.push()` to re-populate it with only the pulled values. +Use `Array.push()` to keep track of pulled values + +```js +const pullAtValue = (arr, pullArr) => { + let removed = [], + pushToRemove = arr.forEach((v, i) => pullArr.includes(v) ? removed.push(v) : v), + mutateTo = arr.filter((v, i) => !pullArr.includes(v)); + arr.length = 0; + mutateTo.forEach(v => arr.push(v)); + return removed; +} +/* +let myArray = ['a', 'b', 'c', 'd']; +let pulled = pullAtValue(myArray, ['b', 'd']); +console.log(myArray); -> [ 'a', 'c' ] +console.log(pulled); -> [ 'b', 'd' ] +*/ +``` diff --git a/tag_database b/tag_database index 2d675024c..c189c4a9e 100644 --- a/tag_database +++ b/tag_database @@ -74,6 +74,7 @@ pipe:function powerset:math promisify:function pull:array +pullAtValue:array pullAll:array pullAtIndex:array randomIntegerInRange:math