From b74d2f26d525accd7f9ef29c65a9805ab53abb15 Mon Sep 17 00:00:00 2001 From: Izel Nakri Date: Wed, 6 Jul 2022 01:44:17 +0200 Subject: [PATCH 1/2] Core: refactor diff to do less slow mutations --- src/core/utilities.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/core/utilities.js b/src/core/utilities.js index 715311b82..74d44f501 100644 --- a/src/core/utilities.js +++ b/src/core/utilities.js @@ -43,18 +43,13 @@ export const performance = { // Returns a new Array with the elements that are in a but not in b export function diff (a, b) { - const result = a.slice(); - - for (let i = 0; i < result.length; i++) { - for (let j = 0; j < b.length; j++) { - if (result[i] === b[j]) { - result.splice(i, 1); - i--; - break; - } + return a.reduce((result, item) => { + if (b.indexOf(item) === -1) { + result.push(item); } - } - return result; + + return result; + }, []); } /** From 70384df0d535faed90100105a15e7822869ef304 Mon Sep 17 00:00:00 2001 From: Izel Nakri Date: Fri, 8 Jul 2022 18:37:31 +0200 Subject: [PATCH 2/2] Core: make diff() use array filter internally --- src/core/utilities.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/core/utilities.js b/src/core/utilities.js index 74d44f501..d6ff13212 100644 --- a/src/core/utilities.js +++ b/src/core/utilities.js @@ -43,13 +43,7 @@ export const performance = { // Returns a new Array with the elements that are in a but not in b export function diff (a, b) { - return a.reduce((result, item) => { - if (b.indexOf(item) === -1) { - result.push(item); - } - - return result; - }, []); + return a.filter((a) => b.indexOf(a) === -1); } /**