From ee3af71fd41a81f07961099005cd444b633baa85 Mon Sep 17 00:00:00 2001 From: D-Sketon <2055272094@qq.com> Date: Sun, 9 Aug 2026 16:26:24 +0800 Subject: [PATCH] fix(compat/reverse): support array-like objects and `arguments` like lodash --- src/compat/array/reverse.spec.ts | 15 +++++++++++++++ src/compat/array/reverse.ts | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/compat/array/reverse.spec.ts b/src/compat/array/reverse.spec.ts index 6c4d94c900..7151bd2505 100644 --- a/src/compat/array/reverse.spec.ts +++ b/src/compat/array/reverse.spec.ts @@ -84,4 +84,19 @@ describe('reverse', () => { expect(result).toEqual(['four', 3, 'two', 1]); expect(result).toBe(array); }); + + it('should work with array-like objects and `arguments`', () => { + const arrayLike = { 0: 'a', 1: 'b', 2: 'c', length: 3 }; + const result = reverse(arrayLike); + + expect(result).toBe(arrayLike); + expect(result).toEqual({ 0: 'c', 1: 'b', 2: 'a', length: 3 }); + }); + + it('should return primitives unchanged', () => { + // @ts-expect-error - type mismatch + expect(Number(reverse(42))).toBe(42); + // @ts-expect-error - type mismatch + expect(Boolean(reverse(true))).toBe(true); + }); }); diff --git a/src/compat/array/reverse.ts b/src/compat/array/reverse.ts index 79cb04b161..188aa97eaf 100644 --- a/src/compat/array/reverse.ts +++ b/src/compat/array/reverse.ts @@ -41,5 +41,5 @@ export function reverse(array: T[] | null | undefined): T[] | null | undefine return array; } - return array.reverse(); + return Array.prototype.reverse.call(array); }