Skip to content

Commit

Permalink
Refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
ehmicky committed Dec 26, 2021
1 parent cef51e4 commit 1ede12c
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 7 deletions.
10 changes: 3 additions & 7 deletions src/system/footer/shared_2.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import mapObj from 'map-obj'
import omit from 'omit.js'
import sortOn from 'sort-on'

import { uniqueDeep } from '../../utils/unique.js'

/* eslint-disable max-nested-callbacks, max-lines-per-function, complexity, max-lines, fp/no-loops, max-statements, max-depth, no-unreachable-loop */
const mainLogic = function (systems) {
const propEntries = listPropEntries(systems)
Expand Down Expand Up @@ -201,13 +203,7 @@ const isReducibleDimension = function ({
}

const removeDuplicateDimensions = function (dimensionsArray) {
return dimensionsArray.filter(isUniqueDimensions)
}

const isUniqueDimensions = function (dimensions, index, dimensionsArray) {
return dimensionsArray
.slice(index + 1)
.every((dimensionsB) => !isDeepStrictEqual(dimensions, dimensionsB))
return uniqueDeep(dimensionsArray)
}

const normalizeTopSystem = function (dimensionsArray) {
Expand Down
22 changes: 22 additions & 0 deletions src/utils/unique.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { isDeepStrictEqual } from 'util'

// Remove duplicate elements using a deep comparison.
// Uses imperative code for performance.
// Avoids creating intermediary arrays for memory.
export const uniqueDeep = function (array) {
return array.filter(isUniqueDeep)
}

const isUniqueDeep = function (value, valueIndex, array) {
// eslint-disable-next-line fp/no-loops, fp/no-mutation, fp/no-let
for (let index = valueIndex + 1; index < array.length; index += 1) {
const valueB = array[index]

// eslint-disable-next-line max-depth
if (isDeepStrictEqual(value, valueB)) {
return false
}
}

return true
}

0 comments on commit 1ede12c

Please sign in to comment.