LendAndRegret/node_modules/es-toolkit/dist/compat/array/pullAllWith.js
2026-05-02 17:27:43 +08:00

38 lines
1.2 KiB
JavaScript

'use strict';
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const copyArray = require('../_internal/copyArray.js');
const isEqualsSameValueZero = require('../../_internal/isEqualsSameValueZero.js');
function pullAllWith(array, values, comparator) {
if (array?.length == null || values?.length == null) {
return array;
}
if (array === values) {
values = copyArray(values);
}
let resultLength = 0;
if (comparator == null) {
comparator = (a, b) => isEqualsSameValueZero.isEqualsSameValueZero(a, b);
}
const valuesArray = Array.isArray(values) ? values : Array.from(values);
const hasUndefined = valuesArray.includes(undefined);
for (let i = 0; i < array.length; i++) {
if (i in array) {
const shouldRemove = valuesArray.some(value => comparator(array[i], value));
if (!shouldRemove) {
array[resultLength++] = array[i];
}
continue;
}
if (!hasUndefined) {
delete array[resultLength++];
}
}
array.length = resultLength;
return array;
}
exports.pullAllWith = pullAllWith;