Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | 160x 15x 14x 14x 37x 14x 160x 263x 151x 151x 151x 10x 141x 141x 141x 21x 120x 120x 120x 38x 33x 33x 33x 2x 31x 40x 40x 40x 13x 100x 160x 70x | import { isArray, isDate, isObject } from './' function looseCompareArrays(a: any[], b: any[]) { if (a.length !== b.length) return false let equal = true for (let i = 0; equal && i < a.length; i++) { equal = looseEqual(a[i], b[i]) } return equal } export function looseEqual(a: any, b: any): boolean { if (a === b) return true let aValidType = isDate(a) let bValidType = isDate(b) if (aValidType || bValidType) { return aValidType && bValidType ? a.getTime() === b.getTime() : false } aValidType = isArray(a) bValidType = isArray(b) if (aValidType || bValidType) { return aValidType && bValidType ? looseCompareArrays(a, b) : false } aValidType = isObject(a) bValidType = isObject(b) if (aValidType || bValidType) { /* istanbul ignore if: this if will probably never be called */ if (!aValidType || !bValidType) { return false } const aKeysCount = Object.keys(a).length const bKeysCount = Object.keys(b).length if (aKeysCount !== bKeysCount) { return false } for (const key in a) { const aHasKey = a.hasOwnProperty(key) const bHasKey = b.hasOwnProperty(key) if ( (aHasKey && !bHasKey) || (!aHasKey && bHasKey) || !looseEqual(a[key], b[key]) ) { return false } } } return String(a) === String(b) } export function looseIndexOf(arr: any[], val: any): number { return arr.findIndex(item => looseEqual(item, val)) } |