perf(core): replace Array.forEach loops

This commit is contained in:
braks
2024-02-05 07:51:12 +01:00
committed by Braks
parent 66d7198a2f
commit c4b4a04aa0
9 changed files with 57 additions and 42 deletions
+4 -4
View File
@@ -114,7 +114,7 @@ export function applyChanges<
| EdgeRemoveChange
)[]
addRemoveChanges.forEach((change) => {
for (const change of addRemoveChanges) {
if (change.type === 'add') {
const index = elements.findIndex((el) => el.id === change.item.id)
@@ -128,11 +128,11 @@ export function applyChanges<
elements.splice(index, 1)
}
}
})
}
const elementIds = elements.map((el) => el.id)
elements.forEach((element) => {
for (const element of elements) {
const currentChanges = changes.filter((c) => (<any>c).id === element.id)
for (const currentChange of currentChanges) {
@@ -198,7 +198,7 @@ export function applyChanges<
break
}
}
})
}
return elements
}
+8 -4
View File
@@ -169,11 +169,11 @@ function getConnectedElements<T extends Node = Node>(
const origin = dir === 'source' ? 'target' : 'source'
edges.forEach((edge) => {
for (const edge of edges) {
if (edge[origin] === id) {
connectedIds.add(edge[dir])
}
})
}
return nodes.filter((n) => connectedIds.has(n.id))
}
@@ -415,7 +415,9 @@ export function getConnectedEdges<E extends Edge>(nodesOrId: Node[] | string, ed
if (typeof nodesOrId === 'string') {
nodeIds.add(nodesOrId)
} else if (nodesOrId.length >= 1) {
nodesOrId.forEach((n) => nodeIds.add(n.id))
for (const n of nodesOrId) {
nodeIds.add(n.id)
}
}
return edges.filter((edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target))
@@ -424,7 +426,9 @@ export function getConnectedEdges<E extends Edge>(nodesOrId: Node[] | string, ed
export function getConnectedNodes<N extends Node | { id: string } | string>(nodes: N[], edges: Edge[]) {
const nodeIds = new Set()
nodes.forEach((node) => nodeIds.add(typeof node === 'string' ? node : node.id))
for (const node of nodes) {
nodeIds.add(typeof node === 'string' ? node : node.id)
}
const connectedNodeIds = edges.reduce((acc, edge) => {
if (nodeIds.has(edge.source)) {
+2 -2
View File
@@ -101,7 +101,7 @@ export function getClosestHandle(
let closestHandles: { handle: ConnectionHandle; validHandleResult: ValidHandleResult }[] = []
let minDistance = Number.POSITIVE_INFINITY
handles.forEach((handle) => {
for (const handle of handles) {
const distance = Math.sqrt((handle.x - pos.x) ** 2 + (handle.y - pos.y) ** 2)
if (distance <= connectionRadius) {
@@ -121,7 +121,7 @@ export function getClosestHandle(
minDistance = distance
}
}
})
}
if (!closestHandles.length) {
return { handle: null, validHandleResult: defaultValidHandleResult() }