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 266x 152x 152x 152x 10x 142x 142x 142x 21x 121x 121x 121x 38x 33x 33x 33x 2x 31x 40x 40x 40x 13x 101x 160x 72x | 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)) } |