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 | import {FsEntity, PermissionSet} from "../../../background/api/filesystemTypes"; function mergeObjectArraysByProperty(leftArray: any, rightArray: any, propertyName: keyof FsEntity, sortIncreasing: boolean): FsEntity[] { let arr: any = [] // Break out of loop if any one of the array gets empty while (leftArray.length && rightArray.length) { // Pick the smaller among the smallest element of left and right sub arrays if (rightArray[0] === undefined || rightArray[0][propertyName] === undefined || !rightArray[0].hasOwnProperty(propertyName)) { let help: FsEntity | undefined = leftArray.shift(); if (help) arr.push(help) continue; } else if (leftArray[0] === undefined || leftArray[0][propertyName] === undefined || !leftArray[0].hasOwnProperty(propertyName)) { let help: (FsEntity) | undefined = rightArray.shift(); if (help) arr.push(help) continue; } //at this point both elements should have property let firstLeftElement: string | number | boolean | PermissionSet | undefined = leftArray[0][propertyName]; let firstRightElement: string | number | boolean | PermissionSet | undefined = rightArray[0][propertyName]; if (typeof firstLeftElement === "string") firstLeftElement = firstLeftElement.toLowerCase(); if (typeof firstRightElement === "string") firstRightElement = firstRightElement.toLowerCase(); if ( (firstLeftElement !== undefined && firstRightElement !== undefined && firstLeftElement <= firstRightElement && sortIncreasing) ) { let help: (FsEntity) | undefined = leftArray.shift(); if (help) arr.push(help) } else { let help: (FsEntity) | undefined = rightArray.shift(); if (help) arr.push(help) } } // Concatenating leftover elements return [...arr, ...leftArray, ...rightArray] } export function sortObjectsInArrayByProperty(originalArray: any, propertyName: keyof FsEntity, sortIncreasing: boolean): any { const array = [...originalArray] if (!array || array.length <= 1) return array ?? []; const half = array.length / 2 const left = array.splice(0, half) return mergeObjectArraysByProperty(sortObjectsInArrayByProperty(left, propertyName, sortIncreasing), sortObjectsInArrayByProperty(array, propertyName, sortIncreasing), propertyName, sortIncreasing); } |