From 28f326d9830ffd1939447cb7d38629534d50fc79 Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Fri, 13 Sep 2024 22:59:11 -0400 Subject: [PATCH] perf: Optimize SlickGrid handleSelectedRangesChanged by using Set --- src/slick.grid.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/slick.grid.ts b/src/slick.grid.ts index 0a067a57..d5fcc1ee 100644 --- a/src/slick.grid.ts +++ b/src/slick.grid.ts @@ -3479,8 +3479,12 @@ export class SlickGrid = Column, O e if (this.simpleArrayEquals(previousSelectedRows, this.selectedRows)) { const caller = ne?.detail?.caller ?? 'click'; - const newSelectedAdditions = this.getSelectedRows().filter((i) => previousSelectedRows.indexOf(i) < 0); - const newSelectedDeletions = previousSelectedRows.filter((i) => this.getSelectedRows().indexOf(i) < 0); + // Use Set for faster performance + const selectedRowsSet = new Set(this.getSelectedRows()); + const previousSelectedRowsSet = new Set(previousSelectedRows); + + const newSelectedAdditions = Array.from(selectedRowsSet).filter(i => !previousSelectedRowsSet.has(i)); + const newSelectedDeletions = Array.from(previousSelectedRowsSet).filter(i => !selectedRowsSet.has(i)); this.trigger(this.onSelectedRowsChanged, { rows: this.getSelectedRows(),