Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(every/fill/filter/find/findIndex/findLastIndex/indexOf/join): fix lodash compatibility #707

Merged
merged 8 commits into from
Oct 14, 2024
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion benchmarks/performance/every.bench.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { bench, describe } from 'vitest';
import { every as everyEsToolkit_ } from 'es-toolkit';
import { every as everyEsToolkit_ } from 'es-toolkit/compat';
import { every as everyLodash_ } from 'lodash';

const everyEsToolkit = everyEsToolkit_;
Expand Down
17 changes: 17 additions & 0 deletions docs/ja/reference/compat/array/every.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,23 @@ function every<T extends Record<string, unknown>>(object: T, doesMatch: string):

- `arr` (`T[]`) または `object` (`T`): 検索する配列またはオブジェクト。

::: info `arr` は `ArrayLike<T>`、`null` または `undefined` である可能性があります

lodash と完全に互換性があるように、`every` 関数は `arr` を次のように処理します:

- `arr` が `ArrayLike<T>` の場合、`Array.from(...)` を使用して配列に変換されます。
- `arr` が `null` または `undefined` の場合、空の配列として扱われます。

:::

::: info `object` は `null` または `undefined` である可能性があります

lodash と完全に互換性があるように、`every` 関数は `object` を次のように処理します:

- `object` が `null` または `undefined` の場合、空のオブジェクトに変換されます。

:::

- `doesMatch`:

- 配列の場合:
Expand Down
9 changes: 9 additions & 0 deletions docs/ja/reference/compat/array/filter.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,15 @@ function filter<T extends Record<string, unknown>>(object: T, doesMatch: string)

- `arr` (`T[]`) または `object` (`T`): 繰り返し処理する配列やオブジェクト。

::: info `arr` は `ArrayLike<T>`、`null` または `undefined` になります

lodash と完全に互換性を保つため、`filter` 関数は `arr` を次のように処理します。

- `arr` が `ArrayLike<T>` の場合、`Array.from(...)` を使用して配列に変換します。
- `arr` が `null` または `undefined` の場合、空の配列として扱います。

:::

- `doesMatch`:

- 配列の場合:
Expand Down
17 changes: 17 additions & 0 deletions docs/ja/reference/compat/array/find.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,23 @@ function find<T extends Record<string, unknown>>(object: T, doesMatch: string):

- `arr` (`T[]`) または `object` (`T`): 検索する配列またはオブジェクト。

::: info `arr` は `ArrayLike<T>` であるか、`null` または `undefined` である可能性があります

lodash と完全に互換性があるように、`find` 関数は `arr` を次のように処理します。

- `arr` が `ArrayLike<T>` の場合、`Array.from(...)` を使用して配列に変換します。
- `arr` が `null` または `undefined` の場合、空の配列と見なされます。

:::

::: info `object` は `null` または `undefined` である可能性があります

lodash と完全に互換性があるように、`find` 関数は `object` を次のように処理します。

- `object` が `null` または `undefined` の場合、空のオブジェクトに変換されます。

:::

- `doesMatch`:

- 配列の場合:
Expand Down
19 changes: 15 additions & 4 deletions docs/ja/reference/compat/array/findIndex.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,34 @@
## インターフェース

```typescript
function findIndex<T>(arr: T[], doesMatch: (item: T, index: number, arr: T[]) => unknown): number;
function findIndex<T>(arr: T[], doesMatch: Partial<T>): number;
function findIndex<T>(arr: T[], doesMatch: [keyof T, unknown]): number;
function findIndex<T>(arr: T[], doesMatch: string): number;
function findIndex<T>(arr: T[], doesMatch: (item: T, index: number, arr: T[]) => unknown, fromIndex?: number): number;
function findIndex<T>(arr: T[], doesMatch: Partial<T>, fromIndex?: number): number;
function findIndex<T>(arr: T[], doesMatch: [keyof T, unknown], fromIndex?: number): number;
function findIndex<T>(arr: T[], doesMatch: string, fromIndex?: number): number;
```

### パラメータ

- `arr` (`T[]`): 検索する配列。

::: info `arr` は `ArrayLike<T>` であるか、`null` または `undefined` である可能性があります

lodash と完全に互換性があるように、`findIndex` 関数は `arr` を次のように処理します。

- `arr` が `ArrayLike<T>` の場合、`Array.from(...)` を使用して配列に変換します。
- `arr` が `null` または `undefined` の場合、空の配列と見なされます。

:::

- `doesMatch`:

- **検査関数** (`(item: T, index: number, arr: T[]) => unknown`): 探している要素かどうかを返す関数。
- **部分オブジェクト** (`Partial<T>`): 一致させるプロパティと値を指定した部分オブジェクト。
- **プロパティ-値ペア** (`[keyof T, unknown]`): 最初が一致させるプロパティ、2番目が一致させる値を表すタプル。
- **プロパティ名** (`string`): 真と評価される値を持っているか確認するプロパティ名。

- `fromIndex` (`number`): 検索を開始するインデックス。デフォルトは `0`。

### 戻り値

(`number`): 与えられた条件を満たす最初の要素のインデックス。ない場合は `-1`。
Expand Down
9 changes: 9 additions & 0 deletions docs/ja/reference/compat/array/findLastIndex.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,15 @@ function findLastIndex<T>(arr: T[], doesMatch: string, fromIndex?: number): numb

- `arr` (`T[]`): 検索する配列。

::: info `arr` は `ArrayLike<T>` であるか、`null` または `undefined` である可能性があります

lodash と完全に互換性があるように、`findLastIndex` 関数は `arr` を次のように処理します。

- `arr` が `ArrayLike<T>` の場合、`Array.from(...)` を使用して配列に変換します。
- `arr` が `null` または `undefined` の場合、空の配列と見なされます。

:::

- `doesMatch`:

- **検査関数** (`(item: T, index: number, arr: T[]) => unknown`): 探している要素かどうかを返す関数。
Expand Down
14 changes: 12 additions & 2 deletions docs/ja/reference/compat/array/indexOf.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,22 @@
## インターフェース

```typescript
function indexOf<T>(array: T[] | null | undefined, searchElement: T, fromIndex?: number): number;
function indexOf<T>(array: T[], searchElement: T, fromIndex?: number): number;
```

### パラメータ

- `array` (`T[] | null | undefined`): 検索対象の配列。
- `array` (`T[]`): 検索対象の配列。

::: info `array` は `ArrayLike<T>` または `null` または `undefined` である可能性があります

lodash と完全に互換性があるように、`join` 関数は `array` を次のように処理します。

- `array` が `ArrayLike<T>` の場合、配列に変換するために `Array.from(...)` を使用します。
- `array` が `null` または `undefined` の場合、空の配列と見なされます。

:::

- `searchElement` (`T`): 検索する値。
- `fromIndex` (`number`, オプション): 検索を開始するインデックス。

Expand Down
21 changes: 13 additions & 8 deletions docs/ja/reference/compat/array/join.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,22 @@
## インターフェース

```typescript
function join<T>(array: T[], separator: string): string;
function join<T>(array: T[], separator?: string): string;
```

### パラメータ

- `array` (`T[]`) - 結合する配列です。

::: info `array` は `ArrayLike<T>` であるか、`null` または `undefined` である可能性があります

lodash と完全に互換性があるように、`join` 関数は `array` を次のように処理します。

- `array` が `ArrayLike<T>` の場合、`Array.from(...)` を使用して配列に変換します。
- `array` が `null` または `undefined` の場合、空の配列と見なされます。

:::

- `separator` (`string`) - 要素を結合するために用いるセパレータ、デフォルトは一般的なセパレータ `,` です。

### 戻り値
Expand All @@ -25,13 +35,8 @@ function join<T>(array: T[], separator: string): string;

## 例

````typescript
```typescript
const arr = ["a","b","c"];
const result = join(arr, "~");
const arr = ['a', 'b', 'c'];
const result = join(arr, '~');
console.log(result); // Output: "a~b~c"
````

```

```
17 changes: 17 additions & 0 deletions docs/ko/reference/compat/array/every.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,23 @@ function every<T extends Record<string, unknown>>(object: T, doesMatch: string):

- `arr` (`T[]`) 또는 `object` (`T`): 검색할 배열이나 객체.

::: info `arr`는 `ArrayLike<T>`일 수도 있고, `null` 또는 `undefined`일 수도 있어요

lodash와 완벽하게 호환되도록 `every` 함수는 `arr`을 다음과 같이 처리해요:

- `arr`가 `ArrayLike<T>`인 경우 `Array.from(...)`을 사용하여 배열로 변환해요.
- `arr`가 `null` 또는 `undefined`인 경우 빈 배열로 간주돼요.

:::

::: info `object`는 `null` 또는 `undefined`일 수도 있어요

lodash와 완벽하게 호환되도록 `every` 함수는 `object`를 다음과 같이 처리해요:

- `object`가 `null` 또는 `undefined`인 경우 빈 객체로 변환돼요.

:::

- `doesMatch`:

- 배열의 경우:
Expand Down
9 changes: 9 additions & 0 deletions docs/ko/reference/compat/array/filter.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,15 @@ function filter<T extends Record<string, unknown>>(object: T, doesMatch: string)

- `arr` (`T[]`) or `object` (`T`): 반복할 배열이나 객체.

::: info `arr`는 `ArrayLike<T>`일 수도 있고, `null` 또는 `undefined`일 수도 있어요

lodash와 완벽하게 호환되도록 `filter` 함수는 `arr`을 다음과 같이 처리해요:

- `arr`가 `ArrayLike<T>`인 경우 `Array.from(...)`을 사용하여 배열로 변환해요.
- `arr`가 `null` 또는 `undefined`인 경우 빈 배열로 간주돼요.

:::

- `doesMatch`:

- 배열의 경우:
Expand Down
17 changes: 17 additions & 0 deletions docs/ko/reference/compat/array/find.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,23 @@ function find<T extends Record<string, unknown>>(object: T, doesMatch: string):

- `arr` (`T[]`) or `object` (`T`): 검색할 배열이나 객체.

::: info `arr`는 `ArrayLike<T>`일 수도 있고, `null` 또는 `undefined`일 수도 있어요

lodash와 완벽하게 호환되도록 `find` 함수는 `arr`을 다음과 같이 처리해요:

- `arr`가 `ArrayLike<T>`인 경우 `Array.from(...)`을 사용하여 배열로 변환해요.
- `arr`가 `null` 또는 `undefined`인 경우 빈 배열로 간주돼요.

:::

::: info `object`는 `null` 또는 `undefined`일 수도 있어요

lodash와 완벽하게 호환되도록 `find` 함수는 `object`를 다음과 같이 처리해요:

- `object`가 `null` 또는 `undefined`인 경우 빈 객체로 변환돼요.

:::

- `doesMatch`:

- 배열의 경우:
Expand Down
19 changes: 15 additions & 4 deletions docs/ko/reference/compat/array/findIndex.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,34 @@
## 인터페이스

```typescript
function findIndex<T>(arr: T[], doesMatch: (item: T, index: number, arr: T[]) => unknown): number;
function findIndex<T>(arr: T[], doesMatch: Partial<T>): number;
function findIndex<T>(arr: T[], doesMatch: [keyof T, unknown]): number;
function findIndex<T>(arr: T[], doesMatch: string): number;
function findIndex<T>(arr: T[], doesMatch: (item: T, index: number, arr: T[]) => unknown, fromIndex?: number): number;
function findIndex<T>(arr: T[], doesMatch: Partial<T>, fromIndex?: number): number;
function findIndex<T>(arr: T[], doesMatch: [keyof T, unknown], fromIndex?: number): number;
function findIndex<T>(arr: T[], doesMatch: string, fromIndex?: number): number;
```

### 파라미터

- `arr` (`T[]`): 검색할 배열.

::: info `arr`는 `ArrayLike<T>`이거나 `null` 또는 `undefined`일 수 있어요

lodash와 완전히 호환되도록 `findIndex` 함수는 `arr`를 다음과 같이 처리해요.

- `arr`가 `ArrayLike<T>`인 경우, 배열로 변환하기 위해 `Array.from(...)`을 사용해요.
- `arr`가 `null` 또는 `undefined`인 경우, 빈 배열로 간주돼요.

:::

- `doesMatch`:

- **검사 함수** (`(item: T, index: number, arr: T[]) => unknown`): 찾는 요소인지 여부를 반환하는 함수.
- **부분 객체** (`Partial<T>`): 일치시킬 프로퍼티와 값들을 명시한 부분 객체.
- **프로퍼티-값 쌍** (`[keyof T, unknown]`): 첫 번째가 일치시킬 프로퍼티, 두 번째가 일치시킬 값을 나타내는 튜플.
- **프로퍼티 이름** (`string`): 참으로 평가되는 값을 가지고 있는지 확인할 프로퍼티 이름.

- `fromIndex` (`number`): 검색을 시작할 인덱스. 기본값은 `0`.

### 반환 값

(`number`): 주어진 조건을 만족하는 첫 번째 요소의 인덱스. 없으면 `-1`.
Expand Down
17 changes: 13 additions & 4 deletions docs/ko/reference/compat/array/findLastIndex.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,25 @@ function findLastIndex<T>(
arr: T[],
doesMatch: (item: T, index: number, arr: T[]) => unknown,
fromIndex?: number
): T | undefined;
function findLastIndex<T>(arr: T[], doesMatch: Partial<T>, fromIndex?: number): T | undefined;
function findLastIndex<T>(arr: T[], doesMatch: [keyof T, unknown], fromIndex?: number): T | undefined;
function findLastIndex<T>(arr: T[], doesMatch: string, fromIndex?: number): T | undefined;
): number;
function findLastIndex<T>(arr: T[], doesMatch: Partial<T>, fromIndex?: number): number;
function findLastIndex<T>(arr: T[], doesMatch: [keyof T, unknown], fromIndex?: number): number;
function findLastIndex<T>(arr: T[], doesMatch: string, fromIndex?: number): number;
```

### 파라미터

- `arr` (`T[]`): 검색할 배열.

::: info `arr`은 `ArrayLike<T>`일 수도 있고, `null` 또는 `undefined`일 수도 있어요

lodash와 완전히 호환되도록 `findLastIndex` 함수는 `arr`를 다음과 같이 처리해요.

- `arr`가 `ArrayLike<T>`인 경우, 배열로 변환하기 위해 `Array.from(...)`을 사용해요.
- `arr`가 `null` 또는 `undefined`인 경우, 빈 배열로 간주돼요.

:::

- `doesMatch`:

- **검사 함수** (`(item: T, index: number, arr: T[]) => unknown`): 찾는 요소인지 여부를 반환하는 함수.
Expand Down
14 changes: 12 additions & 2 deletions docs/ko/reference/compat/array/indexOf.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,22 @@
## 인터페이스

```typescript
function indexOf<T>(array: T[] | null | undefined, searchElement: T, fromIndex?: number): number;
function indexOf<T>(array: T[], searchElement: T, fromIndex?: number): number;
```

### 파라미터

- `array` (`T[] | null | undefined`): 검색할 배열.
- `array` (`T[]`): 검색할 배열.

::: info `array`는 `ArrayLike<T>`이거나 `null` 또는 `undefined`일 수 있어요

lodash와 완전히 호환되도록 `indexOf` 함수는 `array`를 다음과 같이 처리해요.

- `array`가 `ArrayLike<T>`인 경우, 배열로 변환하기 위해 `Array.from(...)`을 사용해요.
- `array`가 `null` 또는 `undefined`인 경우, 빈 배열로 간주돼요.

:::

- `searchElement` (`T`): 찾을 값.
- `fromIndex` (`number`, 선택): 검색을 시작할 인덱스.

Expand Down
12 changes: 11 additions & 1 deletion docs/ko/reference/compat/array/join.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,22 @@
## 인터페이스

```typescript
function join<T>(array: T[], separator: string): string;
function join<T>(array: T[], separator?: string): string;
```

### 파라미터

- `array` (`T[]`) - 결합할 배열이에요.

::: info `array`는 `ArrayLike<T>`이거나 `null` 또는 `undefined`일 수 있어요

lodash와 완전히 호환되도록 `join` 함수는 `array`를 다음과 같이 처리해요.

- `array`가 `ArrayLike<T>`인 경우, 배열로 변환하기 위해 `Array.from(...)`을 사용해요.
- `array`가 `null` 또는 `undefined`인 경우, 빈 배열로 간주돼요.

:::

- `separator` (`string`) - 요소를 결합하는 데 사용하는 구분자. 기본값은 쉼표(,)에요.

### 반환 값
Expand Down
17 changes: 17 additions & 0 deletions docs/reference/compat/array/every.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,23 @@ function every<T extends Record<string, unknown>>(object: T, doesMatch: string):

- `arr` (`T[]`) or `object` (`T`): The array or object to search through.

::: info `arr` can be `ArrayLike<T>`, `null`, or `undefined`

To ensure full compatibility with lodash, the every function handles `arr` in this way:

- If arr is an `ArrayLike<T>`, it gets converted into an array using `Array.from(...)`.
- If arr is `null` or `undefined`, it will be treated as an empty array.

:::

::: info `object` can be `null` or `undefined`

To ensure full compatibility with lodash, the every function handles `object` in this way:

- If `object` is `null` or `undefined`, it will be converted into an empty object.

:::

- `doesMatch`:

- For the first `every` overload with arrays:
Expand Down
Loading
Loading