From c0d04175ff1cea8f562f80448bb60ea83b278ae4 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 5 Dec 2022 16:18:26 +0000 Subject: [PATCH] refactor(core): simplify array flatten logic (#48358) We can now use modern Javascript to get the same result. PR Close #48358 --- packages/core/src/di/create_injector.ts | 1 - packages/core/src/util/array_utils.ts | 20 ++----------------- .../router/bundle.golden_symbols.json | 3 --- 3 files changed, 2 insertions(+), 22 deletions(-) diff --git a/packages/core/src/di/create_injector.ts b/packages/core/src/di/create_injector.ts index 68f96d214a4e7..36274c4241d91 100644 --- a/packages/core/src/di/create_injector.ts +++ b/packages/core/src/di/create_injector.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {flatten} from '../util/array_utils'; import {EMPTY_ARRAY} from '../util/empty'; import {stringify} from '../util/stringify'; diff --git a/packages/core/src/util/array_utils.ts b/packages/core/src/util/array_utils.ts index 4c1ed40a47ae9..f16953b044b14 100644 --- a/packages/core/src/util/array_utils.ts +++ b/packages/core/src/util/array_utils.ts @@ -32,27 +32,11 @@ export function arrayEquals(a: T[], b: T[], identityAccessor?: (value: T) => return true; } - /** * Flattens an array. */ -export function flatten(list: any[], dst?: any[]): any[] { - if (dst === undefined) dst = list; - for (let i = 0; i < list.length; i++) { - let item = list[i]; - if (Array.isArray(item)) { - // we need to inline it. - if (dst === list) { - // Our assumption that the list was already flat was wrong and - // we need to clone flat since we need to write to it. - dst = list.slice(0, i); - } - flatten(item, dst); - } else if (dst !== list) { - dst.push(item); - } - } - return dst; +export function flatten(list: any[]): any[] { + return list.flat(Number.POSITIVE_INFINITY); } export function deepForEach(input: (T|any[])[], fn: (value: T) => void): void { diff --git a/packages/core/test/bundling/router/bundle.golden_symbols.json b/packages/core/test/bundling/router/bundle.golden_symbols.json index 511c16da48c4f..5849d985071e6 100644 --- a/packages/core/test/bundling/router/bundle.golden_symbols.json +++ b/packages/core/test/bundling/router/bundle.golden_symbols.json @@ -1016,9 +1016,6 @@ { "name": "first" }, - { - "name": "flatten" - }, { "name": "flatten2" },