From d52fa71f62dec04e3cdd3b5e4b9016adaf2ddae2 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 16 Jan 2018 12:51:46 -0800 Subject: [PATCH] Optimize the sameMap function --- src/compiler/core.ts | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/compiler/core.ts b/src/compiler/core.ts index eb0696a1869..2d59e9f5dd7 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -435,23 +435,21 @@ namespace ts { export function sameMap(array: T[], f: (x: T, i: number) => T): T[]; export function sameMap(array: ReadonlyArray, f: (x: T, i: number) => T): ReadonlyArray; export function sameMap(array: T[], f: (x: T, i: number) => T): T[] { - let result: T[]; if (array) { for (let i = 0; i < array.length; i++) { - if (result) { - result.push(f(array[i], i)); - } - else { - const item = array[i]; - const mapped = f(item, i); - if (item !== mapped) { - result = array.slice(0, i); - result.push(mapped); + const item = array[i]; + const mapped = f(item, i); + if (item !== mapped) { + const result = array.slice(0, i); + result.push(mapped); + for (i++; i < array.length; i++) { + result.push(f(array[i], i)); } + return result; } } } - return result || array; + return array; } /**