Mutates the original array to filter out the values specified, based on a given iterator function.
Array.prototype.map()
to apply the iterator function fn
to all array elements.Array.prototype.filter()
and Array.prototype.includes()
to pull out the values that are not needed.Array.prototype.length
to mutate the passed in an array by resetting its length to 0
.Array.prototype.push()
to re-populate it with only the pulled values.const pullBy = (arr, ...args) => {
const length = args.length;
let fn = length > 1 ? args[length - 1] : undefined;
fn = typeof fn == 'function' ? (args.pop(), fn) : undefined;
let argState = (Array.isArray(args[0]) ? args[0] : args).map(val => fn(val));
let pulled = arr.filter((v, i) => !argState.includes(fn(v)));
arr.length = 0;
pulled.forEach(v => arr.push(v));
};
var myArray = [{ x: 1 }, { x: 2 }, { x: 3 }, { x: 1 }];
pullBy(myArray, [{ x: 1 }, { x: 3 }], o => o.x); // myArray = [{ x: 2 }]
JavaScript, Array
Mutates the original array to filter out the values at the specified indexes. Returns the removed elements.
JavaScript, Array
Mutates the original array to filter out the values specified.
JavaScript, Array
Mutates the original array to filter out the values specified. Returns the removed elements.