Skip to content

Commit af8f09c

Browse files
committed
feat: Add removeKey util function
1 parent e207546 commit af8f09c

4 files changed

Lines changed: 23 additions & 2 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const unescaped = stringUtil.unescapeHtml("<div>Hello</div>");
3939
// Object utilities
4040
const cleaned = objectUtil.clearNullProperties({ a: 1, b: null, c: 3 });
4141
const frozen = objectUtil.deepFreeze({ a: { b: 1 } });
42+
const withoutKey = objectUtil.removeKey("b", { a: 1, b: 2, c: 3 }); // { a: 1, c: 3 }
4243

4344
// Number utilities
4445
const total = numberUtil.sum(1, 2, 3, 4, 5); // 15
@@ -81,6 +82,7 @@ const theme = cookieUtil.getCookie("theme");
8182

8283
- `clearNullProperties(obj: object): object` - Removes null/undefined properties
8384
- `deepFreeze(obj: object): object` - Deep freezes an object recursively
85+
- `removeKey(key: string, obj: Record<string, any>): object` - Returns a new object with the specified key removed
8486

8587
### NumberUtil
8688

package/objectUtil/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
export { default as clearNullProperties } from './clearNullProperties';
2-
export { default as deepFreeze } from './deepFreeze';
1+
export { default as clearNullProperties } from "./clearNullProperties";
2+
export { default as deepFreeze } from "./deepFreeze";
3+
export { default as removeKey } from "./removeKey";
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { describe, expect, test } from "vitest";
2+
import removeKey from ".";
3+
4+
describe("removeKey 유틸 함수 테스트", () => {
5+
test("객체와 키를 입력했을 때, 정상적으로 개체에서 속성이 제거되어야한다.", () => {
6+
expect(removeKey("b", { a: 1, b: 2, c: 3 })).toEqual({ a: 1, c: 3 });
7+
});
8+
test("객체와 키를 입력했을 때, 제거할 키가 객체에 없으면 원본 객체가 반환되어야한다.", () => {
9+
expect(removeKey("d", { a: 1, b: 2, c: 3 })).toEqual({ a: 1, b: 2, c: 3 });
10+
});
11+
test("빈 객체와 키를 입력했을 때, 빈 객체가 반환되어야한다.", () => {
12+
expect(removeKey("d", {})).toEqual({});
13+
});
14+
});
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export default function removeKey(key: string, obj: Record<string, any>) {
2+
const { [key]: _, ...rest } = obj;
3+
return rest;
4+
}

0 commit comments

Comments
 (0)