测试
This commit is contained in:
41
frontend/node_modules/memoize-one/src/are-inputs-equal.ts
generated
vendored
Normal file
41
frontend/node_modules/memoize-one/src/are-inputs-equal.ts
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
// Number.isNaN as it is not supported in IE11 so conditionally using ponyfill
|
||||
// Using Number.isNaN where possible as it is ~10% faster
|
||||
|
||||
const safeIsNaN =
|
||||
Number.isNaN ||
|
||||
function ponyfill(value: unknown): boolean {
|
||||
// // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN#polyfill
|
||||
// NaN is the only value in JavaScript which is not equal to itself.
|
||||
return typeof value === 'number' && value !== value;
|
||||
};
|
||||
|
||||
function isEqual(first: unknown, second: unknown): boolean {
|
||||
if (first === second) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Special case for NaN (NaN !== NaN)
|
||||
if (safeIsNaN(first) && safeIsNaN(second)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
export default function areInputsEqual(
|
||||
newInputs: readonly unknown[],
|
||||
lastInputs: readonly unknown[],
|
||||
): boolean {
|
||||
// no checks needed if the inputs length has changed
|
||||
if (newInputs.length !== lastInputs.length) {
|
||||
return false;
|
||||
}
|
||||
// Using for loop for speed. It generally performs better than array.every
|
||||
// https://github.com/alexreardon/memoize-one/pull/59
|
||||
for (let i = 0; i < newInputs.length; i++) {
|
||||
if (!isEqual(newInputs[i], lastInputs[i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user