docs: Clarify docs for es-toolkit/compat
Some checks are pending
CI / codecov (push) Waiting to run
Release / release (push) Waiting to run

This commit is contained in:
Sojin Park 2024-08-10 17:38:07 +09:00
parent 37fe24455a
commit 0ae3e51977
54 changed files with 441 additions and 149 deletions

View File

@ -1,7 +1,9 @@
# concat
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
여러 배열과 값을 하나의 배열로 연결해요.
@ -9,7 +11,7 @@
## 인터페이스
```typescript
function concat<T>(...values: Array<T | T[]>): T[]
function concat<T>(...values: Array<T | T[]>): T[];
```
### 파라미터
@ -24,7 +26,7 @@ function concat<T>(...values: Array<T | T[]>): T[]
```typescript
// 값을 연결
concat(1, 2, 3);
concat(1, 2, 3);
// 반환 값: [1, 2, 3]
// 배열을 연결

View File

@ -1,7 +1,9 @@
# max
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
배열에서 최댓값을 가지는 요소를 반환해요.

View File

@ -1,7 +1,9 @@
# min
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
배열에서 최솟값을 가지는 요소를 반환해요.

View File

@ -1,14 +1,15 @@
# size
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
주어진 인자의 크기를 반환해요.
주어진 인자의 크기를 반환해요.
배열, 문자열, 숫자의 크기를 계산하는데요, 배열은 포함된 요소의 숫자를, 문자열은 문자의 숫자를, 객체는 열거 가능한 프로퍼티의 숫자를 반환해요.
## 인터페이스
```typescript

View File

@ -1,10 +1,12 @@
# zipObjectDeep
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
두 배열을 하나의 객체로 결합해요. 첫 번째 배열은 프로퍼티 경로를 나타내고, 두 번째 배열은 값을 나타내요. [zipObject](../../array/zipObject.md)와 다르게, 프로퍼티로 `a.b` 와 같은 경로를 지정할 수 있어요.
두 배열을 하나의 객체로 결합해요. 첫 번째 배열은 프로퍼티 경로를 나타내고, 두 번째 배열은 값을 나타내요. [zipObject](../../array/zipObject.md)와 다르게, 프로퍼티로 `a.b` 와 같은 경로를 지정할 수 있어요.
프로퍼티 이름을 나타내는 배열이 값을 나타내는 배열보다 길면, 값들은 `undefined`로 채워져요.
@ -33,7 +35,10 @@ const values = [1, 2];
const result = zipObjectDeep(paths, values);
// result 는 { a: { b: { c: 1 } }, d: { e: { f: 2 } } }가 돼요
const paths = [['a', 'b', 'c'], ['d', 'e', 'f']];
const paths = [
['a', 'b', 'c'],
['d', 'e', 'f'],
];
const values = [1, 2];
const result = zipObjectDeep(paths, values);
// result 는 { a: { b: { c: 1 } }, d: { e: { f: 2 } } }가 돼요
@ -47,6 +52,6 @@ const result = zipObjectDeep(paths, values);
## 성능 비교
| | [번들 사이즈](../../../bundle-size.md) | [성능](../../../performance.md) |
| ----------------- | ----------------------------------- | ---------------------------- |
| es-toolkit/compat | 938 바이트 (88% 작음) | 1,102,767 회 (25% 빠름) |
| lodash-es | 7,338 바이트 | 1,476,660 회 |
| ----------------- | -------------------------------------- | ------------------------------- |
| es-toolkit/compat | 938 바이트 (88% 작음) | 1,102,767 회 (25% 빠름) |
| lodash-es | 7,338 바이트 | 1,476,660 회 |

View File

@ -1,7 +1,9 @@
# bind
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
함수의 `this`를 고정하고, `partialArgs`로 미리 인자를 제공해요.

View File

@ -1,7 +1,9 @@
# get
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
객체에서 주어진 경로에 있는 값을 가져와요. 그 값이 `undefined` 라면, 기본값을 반환해요.
@ -11,19 +13,59 @@
```typescript
function get<T extends object, K extends keyof T>(object: T, path: K | [K]): T[K];
function get<T extends object, K extends keyof T>(object: T | null | undefined, path: K | [K]): T[K] | undefined;
function get<T extends object, K extends keyof T, D>(object: T | null | undefined, path: K | [K], defaultValue: D): Exclude<T[K], undefined> | D;
function get<T extends object, K extends keyof T, D>(
object: T | null | undefined,
path: K | [K],
defaultValue: D
): Exclude<T[K], undefined> | D;
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1]>(object: T, path: [K1, K2]): T[K1][K2];
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1]>(object: T | null | undefined, path: [K1, K2]): T[K1][K2] | undefined;
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1], D>(object: T | null | undefined, path: [K1, K2], defaultValue: D): Exclude<T[K1][K2], undefined> | D;
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1]>(
object: T | null | undefined,
path: [K1, K2]
): T[K1][K2] | undefined;
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1], D>(
object: T | null | undefined,
path: [K1, K2],
defaultValue: D
): Exclude<T[K1][K2], undefined> | D;
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(object: T, path: [K1, K2, K3]): T[K1][K2][K3];
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(object: T | null | undefined, path: [K1, K2, K3]): T[K1][K2][K3] | undefined;
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], D>(object: T | null | undefined, path: [K1, K2, K3], defaultValue: D): Exclude<T[K1][K2][K3], undefined> | D;
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(
object: T,
path: [K1, K2, K3]
): T[K1][K2][K3];
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(
object: T | null | undefined,
path: [K1, K2, K3]
): T[K1][K2][K3] | undefined;
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], D>(
object: T | null | undefined,
path: [K1, K2, K3],
defaultValue: D
): Exclude<T[K1][K2][K3], undefined> | D;
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(object: T, path: [K1, K2, K3, K4]): T[K1][K2][K3][K4];
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(object: T | null | undefined, path: [K1, K2, K3, K4]): T[K1][K2][K3][K4] | undefined;
function get<T extends object, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3], D>(object: T | null | undefined, path: [K1, K2, K3, K4], defaultValue: D): Exclude<T[K1][K2][K3][K4], undefined> | D;
function get<
T extends object,
K1 extends keyof T,
K2 extends keyof T[K1],
K3 extends keyof T[K1][K2],
K4 extends keyof T[K1][K2][K3],
>(object: T, path: [K1, K2, K3, K4]): T[K1][K2][K3][K4];
function get<
T extends object,
K1 extends keyof T,
K2 extends keyof T[K1],
K3 extends keyof T[K1][K2],
K4 extends keyof T[K1][K2][K3],
>(object: T | null | undefined, path: [K1, K2, K3, K4]): T[K1][K2][K3][K4] | undefined;
function get<
T extends object,
K1 extends keyof T,
K2 extends keyof T[K1],
K3 extends keyof T[K1][K2],
K4 extends keyof T[K1][K2][K3],
D,
>(object: T | null | undefined, path: [K1, K2, K3, K4], defaultValue: D): Exclude<T[K1][K2][K3][K4], undefined> | D;
function get<T>(object: Record<number, T>, path: number): T;
function get<T>(object: Record<number, T> | null | undefined, path: number): T | undefined;
@ -33,7 +75,11 @@ function get<D>(object: null | undefined, path: PropertyKey, defaultValue: D): D
function get(object: null | undefined, path: PropertyKey): undefined;
function get<T, P extends string>(data: T, path: P): string extends P ? any : Get<T, P>;
function get<T, P extends string, D = Get<T, P>>(data: T, path: P, defaultValue: D): Exclude<Get<T, P>, null | undefined> | D;
function get<T, P extends string, D = Get<T, P>>(
data: T,
path: P,
defaultValue: D
): Exclude<Get<T, P>, null | undefined> | D;
function get(object: unknown, path: PropertyKey, defaultValue?: unknown): any;
function get(object: unknown, path: PropertyKey | readonly PropertyKey[], defaultValue?: unknown): any;
@ -41,9 +87,9 @@ function get(object: unknown, path: PropertyKey | readonly PropertyKey[], defaul
### 파라미터
- `obj` (`object`): 검색할 객체.
- `path` (`string` or `number` or `symbol` or `Array<string | number | symbol>`): 프로퍼티를 가져올 경로.
- `defaultValue` (`unknown`): 찾은 값이 `undefined` 일 때 반환할 값.
- `obj` (`object`): 검색할 객체.
- `path` (`string` or `number` or `symbol` or `Array<string | number | symbol>`): 프로퍼티를 가져올 경로.
- `defaultValue` (`unknown`): 찾은 값이 `undefined` 일 때 반환할 값.
### 반환 값
@ -56,12 +102,12 @@ import { get } from 'es-toolkit/compat';
const obj = {
a: {
b: 4
}
b: 4,
},
};
get(obj, 'a.b'); // 4
get(obj, ['a', 'b']); // 4
get(obj, ['a', 'c']); // undefined
get(obj, ['a', 'c'], null); // null
```
```

View File

@ -1,7 +1,9 @@
# property
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
객체에서 주어진 경로에 있는 값을 가져오는 함수를 만들어요. 값을 가져오기 위해서는 [`get`](./get.md) 함수를 사용해요.
@ -9,12 +11,12 @@
## 인터페이스
```typescript
function property(path: PropertyKey | readonly PropertyKey[]): (object: unknown) => any
function property(path: PropertyKey | readonly PropertyKey[]): (object: unknown) => any;
```
### 파라미터
- `path` (`string` or `number` or `symbol` or `Array<string | number | symbol>`): 프로퍼티를 가져올 경로.
- `path` (`string` or `number` or `symbol` or `Array<string | number | symbol>`): 프로퍼티를 가져올 경로.
### 반환 값
@ -32,4 +34,4 @@ console.log(result); // => 3
const getObjectValue = property(['a', 'b', 'c']);
const result = getObjectValue({ a: { b: { c: 3 } } });
console.log(result); // => 3
```
```

View File

@ -1,7 +1,9 @@
# set
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
지정된 경로에 주어진 값을 설정해요. 경로의 일부가 존재하지 않으면 생성됩니다.

View File

@ -1,5 +1,11 @@
# isArguments
::: info
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
주어진 값이 `arguments` 객체인지 확인해요.
이 함수는 주어진 값이 `arguments` 객체이면 `true`, 아니면 `false`를 반환해요.

View File

@ -1,5 +1,11 @@
# isArray
::: info
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
주어진 값이 배열인지 확인해요.
이 함수는 주어진 값이 배열인지 확인해요.

View File

@ -1,5 +1,11 @@
# isArrayLike
::: info
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
주어진 값이 유사 배열인지 확인해요.
유사 배열 객체는 `null`이나 `undefined`나 함수가 아니며, `length` 프로퍼티가 유효한 길이인 객체에요.

View File

@ -1,7 +1,9 @@
# isMatch
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
`target``source`의 모양 및 값과 일치하는지 확인해요. 객체, 배열, `Map`, `Set`의 깊은 비교를 지원해요.
@ -40,7 +42,10 @@ isMatch([1, 2, 3], [2, 2]); // false
### `Map` 일치
```typescript
const targetMap = new Map([['key1', 'value1'], ['key2', 'value2']]);
const targetMap = new Map([
['key1', 'value1'],
['key2', 'value2'],
]);
const sourceMap = new Map([['key1', 'value1']]);
isMatch(targetMap, sourceMap); // true
```

View File

@ -1,5 +1,11 @@
# isObjectLike
::: info
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
주어진 값이 객체 같은지 확인해요.
객체 같은 값이란, `typeof` 연산의 결과가 `'object'` 이고 `null`이 아닌 값을 말해요.

View File

@ -1,10 +1,12 @@
# matches
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
`source`의 모양 및 값과 일치하는지 확인하는 함수를 만들어요.
`source`의 모양 및 값과 일치하는지 확인하는 함수를 만들어요.
객체, 배열, `Map`, `Set`과의 깊은 비교를 지원해요.
이 함수의 동작은 [isMatch](./isMatch.md)와 동일하고, 호출하는 방법만 달라요.
@ -23,7 +25,6 @@ function matches(source: unknown): (target: unknown) => boolean;
- (`(target: unknown) => boolean`): `source`의 모양 및 값과 일치하는지 확인하는 함수. `target``source`과 일치하면 `true`, 아니면 `false`를 반환해요.
## 예시
### 객체 일치

View File

@ -1,7 +1,9 @@
# endsWith
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
문자열이 주어진 문자열로 끝나는지 확인해요. 검색을 마칠 인덱스를 지정할 수 있어요.
@ -27,8 +29,8 @@ function endsWith(str: string, target: string, position: number = 0): string;
```typescript
import { endsWith } from 'es-toolkit/compat';
endsWith('fooBar', 'foo') // returns true
endsWith('fooBar', 'Bar') // returns false
endsWith('fooBar', 'abcdef') // returns false
endsWith('fooBar', 'Bar', 3) // returns true
endsWith('fooBar', 'foo'); // returns true
endsWith('fooBar', 'Bar'); // returns false
endsWith('fooBar', 'abcdef'); // returns false
endsWith('fooBar', 'Bar', 3); // returns true
```

View File

@ -1,5 +1,11 @@
# padStart
::: info
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
문자열을 주어진 길이가 될 때까지 앞에 글자를 추가해서 늘려요.
이미 문자열이 충분히 길거나, 앞에 추가할 글자가 빈 문자열이라면, 아무 동작도 하지 않아요.

View File

@ -1,7 +1,9 @@
# startsWith
::: info
이 함수는 [lodash와 완전히 호환](../../../compatibility.md)돼요. `es-toolkit/compat` 라이브러리에서 쓸 수 있어요.
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
:::
문자열이 주어진 문자열로 시작하는지 확인해요. 검색을 시작할 인덱스를 지정할 수 있어요.

View File

@ -1,7 +1,9 @@
# concat
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Concatenates multiple arrays and values into a single array.
@ -9,7 +11,7 @@ Concatenates multiple arrays and values into a single array.
## Signature
```typescript
function concat<T>(...values: Array<T | T[]>): T[]
function concat<T>(...values: Array<T | T[]>): T[];
```
### Parameters
@ -24,7 +26,7 @@ function concat<T>(...values: Array<T | T[]>): T[]
```typescript
// Concatenate individual values
concat(1, 2, 3);
concat(1, 2, 3);
// returns [1, 2, 3]
// Concatenate arrays of values

View File

@ -1,7 +1,9 @@
# max
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Finds the element in an array that has the maximum value.

View File

@ -1,7 +1,9 @@
# min
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Finds the element in an array that has the minimum value.

View File

@ -1,7 +1,9 @@
# size
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Returns the size of an array, string, or object.

View File

@ -1,7 +1,9 @@
# zipObjectDeep
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Creates a deeply nested object given arrays of paths and values.
@ -13,7 +15,7 @@ Paths can be dot-separated strings or arrays of property names. If the `keys` ar
## Signature
```typescript
function zipObjectDeep<P extends string | number | symbol, V>(keys: P[], values: V[]): { [K in P]: V }
function zipObjectDeep<P extends string | number | symbol, V>(keys: P[], values: V[]): { [K in P]: V };
```
### Parameters
@ -35,7 +37,10 @@ const values = [1, 2];
const result = zipObjectDeep(paths, values);
// result will be { a: { b: { c: 1 } }, d: { e: { f: 2 } } }
const paths = [['a', 'b', 'c'], ['d', 'e', 'f']];
const paths = [
['a', 'b', 'c'],
['d', 'e', 'f'],
];
const values = [1, 2];
const result = zipObjectDeep(paths, values);
// result will be { a: { b: { c: 1 } }, d: { e: { f: 2 } } }
@ -49,6 +54,6 @@ const result = zipObjectDeep(paths, values);
## Performance Comparison
| | [Bundle Size](../../../bundle-size.md) | [Performance](../../../performance.md) |
| ----------------- | ----------------------------------- | ----------------------------------- |
| es-toolkit/compat | 938 bytes (88% smaller) | 1,102,767 times (25% slower) |
| lodash-es | 7,338 bytes | 1,476,660 times |
| ----------------- | -------------------------------------- | -------------------------------------- |
| es-toolkit/compat | 938 bytes (88% smaller) | 1,102,767 times (25% slower) |
| lodash-es | 7,338 bytes | 1,476,660 times |

View File

@ -1,7 +1,9 @@
# bind
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Creates a function that invokes `func` with the `this` binding of `thisObj` and `partials` prepended to the arguments it receives.

View File

@ -1,7 +1,9 @@
# get
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Retrieves the value at a given path from an object. If the resolved value is undefined, the defaultValue is returned instead.
@ -11,19 +13,53 @@ Retrieves the value at a given path from an object. If the resolved value is und
```typescript
function get<T, K extends keyof T>(object: T, path: K | [K]): T[K];
function get<T, K extends keyof T>(object: T | null | undefined, path: K | [K]): T[K] | undefined;
function get<T, K extends keyof T, D>(object: T | null | undefined, path: K | [K], defaultValue: D): Exclude<T[K], undefined> | D;
function get<T, K extends keyof T, D>(
object: T | null | undefined,
path: K | [K],
defaultValue: D
): Exclude<T[K], undefined> | D;
function get<T, K1 extends keyof T, K2 extends keyof T[K1]>(object: T, path: [K1, K2]): T[K1][K2];
function get<T, K1 extends keyof T, K2 extends keyof T[K1]>(object: T | null | undefined, path: [K1, K2]): T[K1][K2] | undefined;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], D>(object: T | null | undefined, path: [K1, K2], defaultValue: D): Exclude<T[K1][K2], undefined> | D;
function get<T, K1 extends keyof T, K2 extends keyof T[K1]>(
object: T | null | undefined,
path: [K1, K2]
): T[K1][K2] | undefined;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], D>(
object: T | null | undefined,
path: [K1, K2],
defaultValue: D
): Exclude<T[K1][K2], undefined> | D;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(object: T, path: [K1, K2, K3]): T[K1][K2][K3];
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(object: T | null | undefined, path: [K1, K2, K3]): T[K1][K2][K3] | undefined;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], D>(object: T | null | undefined, path: [K1, K2, K3], defaultValue: D): Exclude<T[K1][K2][K3], undefined> | D;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(
object: T,
path: [K1, K2, K3]
): T[K1][K2][K3];
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(
object: T | null | undefined,
path: [K1, K2, K3]
): T[K1][K2][K3] | undefined;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], D>(
object: T | null | undefined,
path: [K1, K2, K3],
defaultValue: D
): Exclude<T[K1][K2][K3], undefined> | D;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(object: T, path: [K1, K2, K3, K4]): T[K1][K2][K3][K4];
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(object: T | null | undefined, path: [K1, K2, K3, K4]): T[K1][K2][K3][K4] | undefined;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3], D>(object: T | null | undefined, path: [K1, K2, K3, K4], defaultValue: D): Exclude<T[K1][K2][K3][K4], undefined> | D;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(
object: T,
path: [K1, K2, K3, K4]
): T[K1][K2][K3][K4];
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(
object: T | null | undefined,
path: [K1, K2, K3, K4]
): T[K1][K2][K3][K4] | undefined;
function get<
T,
K1 extends keyof T,
K2 extends keyof T[K1],
K3 extends keyof T[K1][K2],
K4 extends keyof T[K1][K2][K3],
D,
>(object: T | null | undefined, path: [K1, K2, K3, K4], defaultValue: D): Exclude<T[K1][K2][K3][K4], undefined> | D;
function get<T>(object: Record<number, T>, path: number): T;
function get<T>(object: Record<number, T> | null | undefined, path: number): T | undefined;
@ -33,7 +69,11 @@ function get<D>(object: null | undefined, path: PropertyKey, defaultValue: D): D
function get(object: null | undefined, path: PropertyKey): undefined;
function get<T, P extends string>(data: T, path: P): string extends P ? any : Get<T, P>;
function get<T, P extends string, D = Get<T, P>>(data: T, path: P, defaultValue: D): Exclude<Get<T, P>, null | undefined> | D;
function get<T, P extends string, D = Get<T, P>>(
data: T,
path: P,
defaultValue: D
): Exclude<Get<T, P>, null | undefined> | D;
function get(object: unknown, path: PropertyKey, defaultValue?: unknown): any;
function get(object: unknown, path: PropertyKey | readonly PropertyKey[], defaultValue?: unknown): any;
@ -41,9 +81,9 @@ function get(object: unknown, path: PropertyKey | readonly PropertyKey[], defaul
### Parameters
- `obj` (`object`): The object to query.
- `path` (`string` or `number` or `symbol` or `Array<string | number | symbol>`): The path of the property to get.
- `defaultValue` (`unknown`): The value returned if the resolved value is undefined.
- `obj` (`object`): The object to query.
- `path` (`string` or `number` or `symbol` or `Array<string | number | symbol>`): The path of the property to get.
- `defaultValue` (`unknown`): The value returned if the resolved value is undefined.
### Returns
@ -56,12 +96,12 @@ import { get } from 'es-toolkit/compat';
const obj = {
a: {
b: 4
}
b: 4,
},
};
get(obj, 'a.b'); // 4
get(obj, ['a', 'b']); // 4
get(obj, ['a', 'c']); // undefined
get(obj, ['a', 'c'], null); // null
```
```

View File

@ -1,21 +1,23 @@
# property
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Creates a function that returns the value at a given path of an object.
Creates a function that returns the value at a given path of an object.
It leverages the [`get`](./get.md) functions to obtain the value.
## Signature
```typescript
function property(path: PropertyKey | readonly PropertyKey[]): (object: unknown) => any
function property(path: PropertyKey | readonly PropertyKey[]): (object: unknown) => any;
```
### Parameters
- `path` (`string` or `number` or `symbol` or `Array<string | number | symbol>`): The path of the property to get.
- `path` (`string` or `number` or `symbol` or `Array<string | number | symbol>`): The path of the property to get.
### Returns
@ -33,4 +35,4 @@ console.log(result); // => 3
const getObjectValue = property(['a', 'b', 'c']);
const result = getObjectValue({ a: { b: { c: 3 } } });
console.log(result); // => 3
```
```

View File

@ -1,7 +1,9 @@
# set
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Sets the given value at the specified path of the object. If any part of the path does not exist, it will be created.
@ -9,7 +11,11 @@ Sets the given value at the specified path of the object. If any part of the pat
## Signature
```typescript
function set<T extends object>(obj: T, path: string | number | symbol | Array<string | number | symbol>, value: unknown): T
function set<T extends object>(
obj: T,
path: string | number | symbol | Array<string | number | symbol>,
value: unknown
): T;
```
### Parameters

View File

@ -1,7 +1,9 @@
# isArguments
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Check if a value is an arguments object.

View File

@ -1,7 +1,9 @@
# isArray
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Checks if the given value is an array.

View File

@ -1,7 +1,9 @@
# isArrayLike
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Check if a value is an array-like object.

View File

@ -1,7 +1,9 @@
# isMatch
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Checks if the target matches the source by comparing their structures and values.
@ -41,7 +43,10 @@ isMatch([1, 2, 3], [2, 2]); // false
### Matching maps
```typescript
const targetMap = new Map([['key1', 'value1'], ['key2', 'value2']]);
const targetMap = new Map([
['key1', 'value1'],
['key2', 'value2'],
]);
const sourceMap = new Map([['key1', 'value1']]);
isMatch(targetMap, sourceMap); // true
```

View File

@ -1,7 +1,9 @@
# isObjectLike
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Check if a value is an object-like.

View File

@ -1,7 +1,9 @@
# matches
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Creates a function that performs a deep comparison between a given target and the source object.
@ -22,7 +24,6 @@ function matches(source: unknown): (target: unknown) => boolean;
- (`(target: unknown) => boolean`): Returns a function that takes a target object and returns `true` if the target matches the source, otherwise `false`.
## Examples
### Basic usage

View File

@ -1,7 +1,9 @@
# endsWith
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Checks if a string contains another string at the end of the string.
@ -29,8 +31,8 @@ function endsWith(str: string, target: string, position: number = 0): string;
```typescript
import { endsWith } from 'es-toolkit/string';
endsWith('fooBar', 'foo') // returns false
endsWith('fooBar', 'Bar') // returns true
endsWith('fooBar', 'abcdef') // returns false
endsWith('fooBar', 'foo', 3) // returns true
endsWith('fooBar', 'foo'); // returns false
endsWith('fooBar', 'Bar'); // returns true
endsWith('fooBar', 'abcdef'); // returns false
endsWith('fooBar', 'foo', 3); // returns true
```

View File

@ -1,5 +1,11 @@
# padStart
::: info
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Pads the start of a string with a given character until it reaches the specified length.
If the length is less than or equal to the original string's length, or if the padding character is an empty string,

View File

@ -1,7 +1,9 @@
# startsWith
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isnt fully optimized yet.
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
:::
Checks if a string contains another string at the beginning of the string.
@ -29,8 +31,8 @@ function startsWith(str: string, target: string, position: number = 0): string;
```typescript
import { startsWith } from 'es-toolkit/string';
startsWith('fooBar', 'foo') // returns true
startsWith('fooBar', 'Bar') // returns false
startsWith('fooBar', 'abcdef') // returns false
startsWith('fooBar', 'Bar', 3) // returns true
startsWith('fooBar', 'foo'); // returns true
startsWith('fooBar', 'Bar'); // returns false
startsWith('fooBar', 'abcdef'); // returns false
startsWith('fooBar', 'Bar', 3); // returns true
```

View File

@ -1,7 +1,10 @@
# concat
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
将多个数组和值连接成一个数组。

View File

@ -1,7 +1,10 @@
# max
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
找到数组中具有最大值的元素。

View File

@ -1,7 +1,9 @@
# min
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
找到数组中具有最小值的元素。

View File

@ -1,14 +1,15 @@
# size
::: info
This function is fully compatible with lodash. You can find it in our [compatibility library](../../../compatibility.md), `es-toolkit/compat`.
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
返回数组、字符串或对象的大小。
此函数接收一个数组、字符串或对象并返回其大小。对于数组和字符串,它分别返回元素或字符的数量。对于对象,它返回可枚举属性的数量。
## 签名
```typescript

View File

@ -1,7 +1,10 @@
# zipObjectDeep
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
给定路径和值的数组,创建一个深层嵌套的对象。

View File

@ -1,7 +1,10 @@
# bind
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
创建一个调用 `func` 的函数,`thisObj` 绑定 `func` 函数中的 `this`,并且 `func` 函数会接收 `partialArgs` 附加参数。

View File

@ -1,7 +1,10 @@
# get
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
从对象中获取给定路径的值。如果解析的值为 `undefined`,则返回 `defaultValue`
@ -11,19 +14,53 @@
```typescript
function get<T, K extends keyof T>(object: T, path: K | [K]): T[K];
function get<T, K extends keyof T>(object: T | null | undefined, path: K | [K]): T[K] | undefined;
function get<T, K extends keyof T, D>(object: T | null | undefined, path: K | [K], defaultValue: D): Exclude<T[K], undefined> | D;
function get<T, K extends keyof T, D>(
object: T | null | undefined,
path: K | [K],
defaultValue: D
): Exclude<T[K], undefined> | D;
function get<T, K1 extends keyof T, K2 extends keyof T[K1]>(object: T, path: [K1, K2]): T[K1][K2];
function get<T, K1 extends keyof T, K2 extends keyof T[K1]>(object: T | null | undefined, path: [K1, K2]): T[K1][K2] | undefined;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], D>(object: T | null | undefined, path: [K1, K2], defaultValue: D): Exclude<T[K1][K2], undefined> | D;
function get<T, K1 extends keyof T, K2 extends keyof T[K1]>(
object: T | null | undefined,
path: [K1, K2]
): T[K1][K2] | undefined;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], D>(
object: T | null | undefined,
path: [K1, K2],
defaultValue: D
): Exclude<T[K1][K2], undefined> | D;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(object: T, path: [K1, K2, K3]): T[K1][K2][K3];
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(object: T | null | undefined, path: [K1, K2, K3]): T[K1][K2][K3] | undefined;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], D>(object: T | null | undefined, path: [K1, K2, K3], defaultValue: D): Exclude<T[K1][K2][K3], undefined> | D;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(
object: T,
path: [K1, K2, K3]
): T[K1][K2][K3];
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(
object: T | null | undefined,
path: [K1, K2, K3]
): T[K1][K2][K3] | undefined;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], D>(
object: T | null | undefined,
path: [K1, K2, K3],
defaultValue: D
): Exclude<T[K1][K2][K3], undefined> | D;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(object: T, path: [K1, K2, K3, K4]): T[K1][K2][K3][K4];
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(object: T | null | undefined, path: [K1, K2, K3, K4]): T[K1][K2][K3][K4] | undefined;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3], D>(object: T | null | undefined, path: [K1, K2, K3, K4], defaultValue: D): Exclude<T[K1][K2][K3][K4], undefined> | D;
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(
object: T,
path: [K1, K2, K3, K4]
): T[K1][K2][K3][K4];
function get<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(
object: T | null | undefined,
path: [K1, K2, K3, K4]
): T[K1][K2][K3][K4] | undefined;
function get<
T,
K1 extends keyof T,
K2 extends keyof T[K1],
K3 extends keyof T[K1][K2],
K4 extends keyof T[K1][K2][K3],
D,
>(object: T | null | undefined, path: [K1, K2, K3, K4], defaultValue: D): Exclude<T[K1][K2][K3][K4], undefined> | D;
function get<T>(object: Record<number, T>, path: number): T;
function get<T>(object: Record<number, T> | null | undefined, path: number): T | undefined;
@ -33,7 +70,11 @@ function get<D>(object: null | undefined, path: PropertyKey, defaultValue: D): D
function get(object: null | undefined, path: PropertyKey): undefined;
function get<T, P extends string>(data: T, path: P): string extends P ? any : Get<T, P>;
function get<T, P extends string, D = Get<T, P>>(data: T, path: P, defaultValue: D): Exclude<Get<T, P>, null | undefined> | D;
function get<T, P extends string, D = Get<T, P>>(
data: T,
path: P,
defaultValue: D
): Exclude<Get<T, P>, null | undefined> | D;
function get(object: unknown, path: PropertyKey, defaultValue?: unknown): any;
function get(object: unknown, path: PropertyKey | readonly PropertyKey[], defaultValue?: unknown): any;
@ -41,9 +82,9 @@ function get(object: unknown, path: PropertyKey | readonly PropertyKey[], defaul
### 参数
- `obj` (`object`): 要查询的对象。
- `path` (`string` 或 `number``symbol``Array<string | number | symbol>`): 要获取属性的路径。
- `defaultValue` (`unknown`): 如果解析的值为 `undefined`,返回的值。
- `obj` (`object`): 要查询的对象。
- `path` (`string` 或 `number``symbol``Array<string | number | symbol>`): 要获取属性的路径。
- `defaultValue` (`unknown`): 如果解析的值为 `undefined`,返回的值。
### 返回值
@ -56,12 +97,12 @@ import { get } from 'es-toolkit/compat';
const obj = {
a: {
b: 4
}
b: 4,
},
};
get(obj, 'a.b'); // 4
get(obj, ['a', 'b']); // 4
get(obj, ['a', 'c']); // undefined
get(obj, ['a', 'c'], null); // null
```
```

View File

@ -1,7 +1,10 @@
# property
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
`property` 函数创建一个新函数,用于从对象中获取指定路径的值。它利用 [`get`](./get.md) 函数来获取值。
@ -9,7 +12,7 @@
## 签名
```typescript
function property(path: PropertyKey | readonly PropertyKey[]): (object: unknown) => any
function property(path: PropertyKey | readonly PropertyKey[]): (object: unknown) => any;
```
### 参数
@ -32,4 +35,4 @@ console.log(result); // => 3
const getObjectValue = property(['a', 'b', 'c']);
const result = getObjectValue({ a: { b: { c: 3 } } });
console.log(result); // => 3
```
```

View File

@ -1,7 +1,10 @@
# set
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
在对象的指定路径设置给定值。如果路径的任何部分不存在,将会创建它。
@ -9,7 +12,11 @@
## 签名
```typescript
function set<T extends object>(obj: T, path: string | number | symbol | Array<string | number | symbol>, value: unknown): T
function set<T extends object>(
obj: T,
path: string | number | symbol | Array<string | number | symbol>,
value: unknown
): T;
```
### 参数

View File

@ -1,7 +1,10 @@
# isArguments
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
检查一个值是否是 `arguments` 对象。

View File

@ -1,7 +1,10 @@
# isArray
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
检查给定的值是否为数组。

View File

@ -1,7 +1,10 @@
# isArrayLike
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
检查一个值是否是类似数组的对象。

View File

@ -1,7 +1,10 @@
# isMatch
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
检查目标是否与源匹配,方法是比较它们的结构和值。
@ -41,7 +44,10 @@ isMatch([1, 2, 3], [2, 2]); // false
### 匹配映射
```typescript
const targetMap = new Map([['key1', 'value1'], ['key2', 'value2']]);
const targetMap = new Map([
['key1', 'value1'],
['key2', 'value2'],
]);
const sourceMap = new Map([['key1', 'value1']]);
isMatch(targetMap, sourceMap); // true
```

View File

@ -1,7 +1,10 @@
# isObjectLike
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
检查一个值是否类似对象。

View File

@ -1,7 +1,10 @@
# matches
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
创建一个函数来对给定的目标对象和源对象进行深度比较。

View File

@ -1,7 +1,10 @@
# endsWith
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
检查字符串是否在其末尾包含另一个字符串。
@ -29,8 +32,8 @@ function endsWith(str: string, target: string, position: number = 0): string;
```typescript
import { endsWith } from 'es-toolkit/compat';
endsWith('fooBar', 'foo') // 返回 true
endsWith('fooBar', 'Bar') // 返回 false
endsWith('fooBar', 'abcdef') // 返回 false
endsWith('fooBar', 'Bar', 3) // 返回 true
endsWith('fooBar', 'foo'); // 返回 true
endsWith('fooBar', 'Bar'); // 返回 false
endsWith('fooBar', 'abcdef'); // 返回 false
endsWith('fooBar', 'Bar', 3); // 返回 true
```

View File

@ -1,5 +1,12 @@
# padStart
::: info
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
在字符串的开头使用给定的字符进行填充,直到它达到指定的长度。
如果指定的长度小于或等于原字符串的长度,或者填充字符为空字符串,则返回原字符串不变。
@ -26,3 +33,4 @@ function padStart(str: string, length = 0, chars = ' '): string;
padStart('hello', 10, 'a'); // 'aaaaahello'
padStart('hello', 3, 'a'); // 'hello'
padStart('hello', 5, ''); // 'hello'
```

View File

@ -1,7 +1,10 @@
# startsWith
::: info
此函数与 lodash 完全兼容。您可以在我们的[兼容性库](../../../compatibility.md)中找到它,`es-toolkit/compat`。
出于兼容性原因,此函数仅在 `es-toolkit/compat` 中提供。它可能具有替代的原生 JavaScript API或者尚未完全优化。
`es-toolkit/compat` 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 [这里](../../../compatibility.md)。
:::
检查字符串是否在其开头包含另一个字符串。
@ -29,8 +32,8 @@ function startsWith(str: string, target: string, position: number = 0): string;
```typescript
import { startsWith } from 'es-toolkit/compat';
startsWith('fooBar', 'foo') // 返回 true
startsWith('fooBar', 'Bar') // 返回 false
startsWith('fooBar', 'abcdef') // 返回 false
startsWith('fooBar', 'Bar', 3) // 返回 true
startsWith('fooBar', 'foo'); // 返回 true
startsWith('fooBar', 'Bar'); // 返回 false
startsWith('fooBar', 'abcdef'); // 返回 false
startsWith('fooBar', 'Bar', 3); // 返回 true
```