From 7abd06033c7c38a56d13965494bc050f4dcb2458 Mon Sep 17 00:00:00 2001 From: Avasam Date: Wed, 19 May 2021 22:46:16 -0400 Subject: [PATCH 1/2] Optimized splitNested --- packages/react-bootstrap-table2/src/utils.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/react-bootstrap-table2/src/utils.js b/packages/react-bootstrap-table2/src/utils.js index 23d3cc21a..9e97bc68a 100644 --- a/packages/react-bootstrap-table2/src/utils.js +++ b/packages/react-bootstrap-table2/src/utils.js @@ -4,11 +4,9 @@ import _ from 'underscore'; function splitNested(str) { - return [str] - .join('.') - .replace(/\[/g, '.') - .replace(/\]/g, '') - .split('.'); + return str + .replace(']', '') + .split(/\[\./); } function contains(list, value) { From 847df15b5f343aa8b9206de5384a5ae37155f882 Mon Sep 17 00:00:00 2001 From: Avasam Date: Thu, 20 May 2021 00:14:44 -0400 Subject: [PATCH 2/2] More efficient comparator for large array of string See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare#performance --- packages/react-bootstrap-table2/src/store/sort.js | 7 +++---- packages/react-bootstrap-table2/src/utils.js | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/react-bootstrap-table2/src/store/sort.js b/packages/react-bootstrap-table2/src/store/sort.js index 1f349ac5c..0ca63e72a 100644 --- a/packages/react-bootstrap-table2/src/store/sort.js +++ b/packages/react-bootstrap-table2/src/store/sort.js @@ -4,14 +4,13 @@ import _ from '../utils'; import Const from '../const'; +const collator = new Intl.Collator(); function comparator(a, b) { - let result; if (typeof b === 'string') { - result = b.localeCompare(a); + return collator.compare(a, b); } else { - result = a > b ? -1 : ((a < b) ? 1 : 0); + return a > b ? -1 : ((a < b) ? 1 : 0); } - return result; } export const sort = (data, sortOrder, { dataField, sortFunc, sortValue }) => { diff --git a/packages/react-bootstrap-table2/src/utils.js b/packages/react-bootstrap-table2/src/utils.js index 9e97bc68a..fc8369f7d 100644 --- a/packages/react-bootstrap-table2/src/utils.js +++ b/packages/react-bootstrap-table2/src/utils.js @@ -56,8 +56,8 @@ function isEmptyObject(obj) { const hasOwnProperty = Object.prototype.hasOwnProperty; const keys = Object.keys(obj); - for (let i = 0; i < keys.length; i += 1) { - if (hasOwnProperty.call(obj, keys[i])) return false; + for (let key of keys) { + if (hasOwnProperty.call(obj, key)) return false; } return true;