mirror of
https://github.com/toss/es-toolkit.git
synced 2025-01-05 23:43:29 +03:00
docs: Translate and create Japanese version (#432)
* docs: translate and create Japanese version * docs: run prettier * Apply suggestions from code review --------- Co-authored-by: Sojin Park <raon0211@gmail.com>
This commit is contained in:
parent
55fae71d06
commit
d45bc3352b
@ -4,7 +4,7 @@
|
||||
|
||||
[English](https://github.com/toss/es-toolkit/blob/main/README.md) | [한국어](https://github.com/toss/es-toolkit/blob/main/README-ko_kr.md) | [简体中文](https://github.com/toss/es-toolkit/blob/main/README-zh_hans.md) | 日本語
|
||||
|
||||
es-toolkitは、最新のJavaScriptユーティリティライブラリであり、高性能で小さなバンドルサイズ、強力な型注釈を提供します。
|
||||
es-toolkitは、最先端のJavaScriptユーティリティライブラリであり、高性能で小さなバンドルサイズ、強力な型注釈を提供します。
|
||||
|
||||
- es-toolkitは、[debounce](https://es-toolkit.slash.page/reference/function/debounce.html)、[delay](https://es-toolkit.slash.page/reference/promise/delay.html)、[chunk](https://es-toolkit.slash.page/reference/array/chunk.html)、[sum](https://es-toolkit.slash.page/reference/math/sum.html)、[pick](https://es-toolkit.slash.page/reference/object/pick.html)など、日常的に使用するさまざまなユーティリティ関数を最新の実装で提供します。
|
||||
- パフォーマンスを重視して設計されており、es-toolkitは最新のJavaScript環境で[2-3倍の性能向上](https://es-toolkit.slash.page/performance.html)を実現します。
|
||||
|
@ -3,6 +3,7 @@ import container from 'markdown-it-container';
|
||||
import { renderSandbox } from 'vitepress-plugin-sandpack';
|
||||
import { en } from './en.mts';
|
||||
import { ko } from './ko.mts';
|
||||
import { ja } from './ja.mts';
|
||||
import { zh_hans } from './zh_hans.mts';
|
||||
import { shared } from './shared.mts';
|
||||
|
||||
@ -12,6 +13,7 @@ export default defineConfig({
|
||||
root: { label: 'English', ...en },
|
||||
ko: { label: '한국어', ...ko },
|
||||
zh_hans: { label: '简体中文', ...zh_hans },
|
||||
ja: { label: '日本語', ...ja },
|
||||
},
|
||||
markdown: {
|
||||
config(md) {
|
||||
|
257
docs/.vitepress/ja.mts
Normal file
257
docs/.vitepress/ja.mts
Normal file
@ -0,0 +1,257 @@
|
||||
import { type DefaultTheme, defineConfig } from 'vitepress';
|
||||
|
||||
export const ja = defineConfig({
|
||||
lang: 'ja',
|
||||
description: '高速なパフォーマンスと小さなバンドルサイズを持つ最先端のJavaScriptユーティリティライブラリ',
|
||||
|
||||
themeConfig: {
|
||||
nav: nav(),
|
||||
|
||||
sidebar: sidebar(),
|
||||
|
||||
editLink: {
|
||||
pattern: 'https://github.com/toss/es-toolkit/edit/main/docs/:path',
|
||||
text: 'GitHubで編集する',
|
||||
},
|
||||
|
||||
footer: {
|
||||
message: 'MIT ライセンスの下で配布されています。',
|
||||
copyright: `Copyright © ${new Date().getFullYear()} Viva Republica, Inc.`,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
function nav(): DefaultTheme.NavItem[] {
|
||||
return [
|
||||
{ text: 'ホーム', link: '/ja' },
|
||||
{ text: '導入', link: '/ja/intro' },
|
||||
{ text: 'リファレンス', link: '/ja/reference/array/chunk' },
|
||||
];
|
||||
}
|
||||
|
||||
function sidebar(): DefaultTheme.Sidebar {
|
||||
return [
|
||||
{
|
||||
text: 'ガイド',
|
||||
items: [
|
||||
{ text: '紹介', link: '/ja/intro' },
|
||||
{ text: 'インストールと使用方法', link: '/ja/usage' },
|
||||
{ text: 'バンドルサイズ', link: '/ja/bundle-size' },
|
||||
{ text: 'パフォーマンス', link: '/ja/performance' },
|
||||
{ text: 'Lodash との互換性', link: '/ja/compatibility' },
|
||||
],
|
||||
},
|
||||
{
|
||||
text: 'リファレンス',
|
||||
items: [
|
||||
{
|
||||
text: '配列',
|
||||
items: [
|
||||
{ text: 'chunk', link: '/ja/reference/array/chunk' },
|
||||
{ text: 'concat (compat)', link: '/ja/reference/compat/array/concat' },
|
||||
{ text: 'countBy', link: '/ja/reference/array/countBy' },
|
||||
{ text: 'compact', link: '/ja/reference/array/compact' },
|
||||
{ text: 'difference', link: '/ja/reference/array/difference' },
|
||||
{ text: 'differenceBy', link: '/ja/reference/array/differenceBy' },
|
||||
{ text: 'differenceWith', link: '/ja/reference/array/differenceWith' },
|
||||
{ text: 'drop', link: '/ja/reference/array/drop' },
|
||||
{ text: 'dropWhile', link: '/ja/reference/array/dropWhile' },
|
||||
{ text: 'dropRight', link: '/ja/reference/array/dropRight' },
|
||||
{ text: 'dropRightWhile', link: '/ja/reference/array/dropRightWhile' },
|
||||
{ text: 'fill', link: '/ja/reference/array/fill' },
|
||||
{ text: 'toFilled', link: '/ja/reference/array/toFilled' },
|
||||
{ text: 'find (compat)', link: '/ja/reference/compat/array/find' },
|
||||
{ text: 'findIndex (compat)', link: '/ja/reference/compat/array/findIndex' },
|
||||
{ text: 'flatMap', link: '/ja/reference/array/flatMap' },
|
||||
{ text: 'flatten', link: '/ja/reference/array/flatten' },
|
||||
{ text: 'flattenDeep', link: '/ja/reference/array/flattenDeep' },
|
||||
{ text: 'forEachRight', link: '/ja/reference/array/forEachRight' },
|
||||
{ text: 'groupBy', link: '/ja/reference/array/groupBy' },
|
||||
{ text: 'indexOf (compat)', link: '/ja/reference/compat/array/indexOf' },
|
||||
{ text: 'intersection', link: '/ja/reference/array/intersection' },
|
||||
{ text: 'intersectionBy', link: '/ja/reference/array/intersectionBy' },
|
||||
{
|
||||
text: 'intersectionWith',
|
||||
link: '/ja/reference/array/intersectionWith',
|
||||
},
|
||||
{ text: 'isSubset', link: '/ja/reference/array/isSubset' },
|
||||
{ text: 'keyBy', link: '/ja/reference/array/keyBy' },
|
||||
{ text: 'minBy', link: '/ja/reference/array/minBy' },
|
||||
{ text: 'maxBy', link: '/ja/reference/array/maxBy' },
|
||||
{ text: 'min (compat)', link: '/ja/reference/compat/array/min' },
|
||||
{ text: 'max (compat)', link: '/ja/reference/compat/array/max' },
|
||||
{ text: 'orderBy', link: '/ja/reference/array/orderBy' },
|
||||
{ text: 'partition', link: '/ja/reference/array/partition' },
|
||||
{ text: 'sample', link: '/ja/reference/array/sample' },
|
||||
{ text: 'sampleSize', link: '/ja/reference/array/sampleSize' },
|
||||
{ text: 'shuffle', link: '/ja/reference/array/shuffle' },
|
||||
{ text: 'size (compat)', link: '/ja/reference/compat/array/size' },
|
||||
{ text: 'sortBy', link: '/ja/reference/array/sortBy' },
|
||||
{ text: 'take', link: '/ja/reference/array/take' },
|
||||
{ text: 'takeWhile', link: '/ja/reference/array/takeWhile' },
|
||||
{ text: 'takeRight', link: '/ja/reference/array/takeRight' },
|
||||
{ text: 'takeRightWhile', link: '/ja/reference/array/takeRightWhile' },
|
||||
{ text: 'union', link: '/ja/reference/array/union' },
|
||||
{ text: 'unionBy', link: '/ja/reference/array/unionBy' },
|
||||
{ text: 'unionWith', link: '/ja/reference/array/unionWith' },
|
||||
{ text: 'uniq', link: '/ja/reference/array/uniq' },
|
||||
{ text: 'uniqBy', link: '/ja/reference/array/uniqBy' },
|
||||
{ text: 'uniqWith', link: '/ja/reference/array/uniqWith' },
|
||||
{ text: 'unzip', link: '/ja/reference/array/unzip' },
|
||||
{ text: 'unzipWith', link: '/ja/reference/array/unzipWith' },
|
||||
{ text: 'without', link: '/ja/reference/array/without' },
|
||||
{ text: 'xor', link: '/ja/reference/array/xor' },
|
||||
{ text: 'xorBy', link: '/ja/reference/array/xorBy' },
|
||||
{ text: 'xorWith', link: '/ja/reference/array/xorWith' },
|
||||
{ text: 'zip', link: '/ja/reference/array/zip' },
|
||||
{ text: 'zipObject', link: '/ja/reference/array/zipObject' },
|
||||
{ text: 'zipObjectDeep (compat)', link: '/ja/reference/compat/array/zipObjectDeep' },
|
||||
{ text: 'zipWith', link: '/ja/reference/array/zipWith' },
|
||||
{ text: 'head', link: '/ja/reference/array/head' },
|
||||
{ text: 'tail', link: '/ja/reference/array/tail' },
|
||||
{ text: 'last', link: '/ja/reference/array/last' },
|
||||
{ text: 'initial', link: '/ja/reference/array/initial' },
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '関数',
|
||||
items: [
|
||||
{ text: 'before', link: '/ja/reference/function/before' },
|
||||
{ text: 'after', link: '/ja/reference/function/after' },
|
||||
{ text: 'debounce', link: '/ja/reference/function/debounce' },
|
||||
{ text: 'throttle', link: '/ja/reference/function/throttle' },
|
||||
{ text: 'negate', link: '/ja/reference/function/negate' },
|
||||
{ text: 'once', link: '/ja/reference/function/once' },
|
||||
{ text: 'noop', link: '/ja/reference/function/noop' },
|
||||
{ text: 'memoize', link: '/ja/reference/function/memoize' },
|
||||
{ text: 'ary', link: '/ja/reference/function/ary' },
|
||||
{ text: 'unary', link: '/ja/reference/function/unary' },
|
||||
{ text: 'bind (compat)', link: '/ja/reference/compat/function/bind' },
|
||||
{ text: 'partial', link: '/ja/reference/function/partial' },
|
||||
{ text: 'partialRight', link: '/ja/reference/function/partialRight' },
|
||||
{ text: 'rest', link: '/ja/reference/function/rest' },
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '数学',
|
||||
items: [
|
||||
{ text: 'clamp', link: '/ja/reference/math/clamp' },
|
||||
{ text: 'inRange', link: '/ja/reference/math/inRange' },
|
||||
{ text: 'mean', link: '/ja/reference/math/mean' },
|
||||
{ text: 'meanBy', link: '/ja/reference/math/meanBy' },
|
||||
{ text: 'random', link: '/ja/reference/math/random' },
|
||||
{ text: 'randomInt', link: '/ja/reference/math/randomInt' },
|
||||
{ text: 'range', link: '/ja/reference/math/range' },
|
||||
{ text: 'round', link: '/ja/reference/math/round' },
|
||||
{ text: 'sum', link: '/ja/reference/math/sum' },
|
||||
{ text: 'sumBy', link: '/ja/reference/math/sumBy' },
|
||||
],
|
||||
},
|
||||
{
|
||||
text: 'オブジェクト',
|
||||
items: [
|
||||
{ text: 'clone', link: '/ja/reference/object/clone' },
|
||||
{ text: 'cloneDeep', link: '/ja/reference/object/cloneDeep' },
|
||||
{ text: 'invert', link: '/ja/reference/object/invert' },
|
||||
{ text: 'flattenObject', link: '/ja/reference/object/flattenObject' },
|
||||
{ text: 'mapKeys', link: '/ja/reference/object/mapKeys' },
|
||||
{ text: 'mapValues', link: '/ja/reference/object/mapValues' },
|
||||
{ text: 'merge', link: '/ja/reference/object/merge' },
|
||||
{ text: 'mergeWith', link: '/ja/reference/object/mergeWith' },
|
||||
{ text: 'toMerged', link: '/ja/reference/object/toMerged' },
|
||||
{ text: 'omit', link: '/ja/reference/object/omit' },
|
||||
{ text: 'omitBy', link: '/ja/reference/object/omitBy' },
|
||||
{ text: 'pick', link: '/ja/reference/object/pick' },
|
||||
{ text: 'pickBy', link: '/ja/reference/object/pickBy' },
|
||||
{ text: 'get (compat)', link: '/ja/reference/compat/object/get' },
|
||||
{ text: 'set (compat)', link: '/ja/reference/compat/object/set' },
|
||||
{ text: 'has (compat)', link: '/ja/reference/compat/object/has' },
|
||||
{ text: 'property (compat)', link: '/ja/reference/compat/object/property' },
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '述語',
|
||||
items: [
|
||||
{ text: 'isArguments (compat)', link: '/ja/reference/compat/predicate/isArguments' },
|
||||
{ text: 'isArray (compat)', link: '/ja/reference/compat/predicate/isArray' },
|
||||
{ text: 'isArrayLike (compat)', link: '/ja/reference/compat/predicate/isArrayLike' },
|
||||
{ text: 'isBoolean', link: '/ja/reference/predicate/isBoolean' },
|
||||
{ text: 'isEqual', link: '/ja/reference/predicate/isEqual' },
|
||||
{ text: 'isFunction', link: '/ja/reference/predicate/isFunction' },
|
||||
{ text: 'isLength', link: '/ja/reference/predicate/isLength' },
|
||||
{ text: 'isPlainObject', link: '/ja/reference/predicate/isPlainObject' },
|
||||
{ text: 'isPrimitive', link: '/ja/reference/predicate/isPrimitive' },
|
||||
{ text: 'isString', link: '/ja/reference/predicate/isString' },
|
||||
{ text: 'isSymbol', link: '/ja/reference/predicate/isSymbol' },
|
||||
{ text: 'isMatch (compat)', link: '/ja/reference/compat/predicate/isMatch' },
|
||||
{ text: 'matches (compat)', link: '/ja/reference/compat/predicate/matches' },
|
||||
{ text: 'matchesProperty (compat)', link: '/ja/reference/compat/predicate/matchesProperty' },
|
||||
{ text: 'isNil', link: '/ja/reference/predicate/isNil' },
|
||||
{ text: 'isNotNil', link: '/ja/reference/predicate/isNotNil' },
|
||||
{ text: 'isNull', link: '/ja/reference/predicate/isNull' },
|
||||
{ text: 'isObjectLike (compat)', link: '/ja/reference/compat/predicate/isObjectLike' },
|
||||
{ text: 'isTypedArray', link: '/ja/reference/predicate/isTypedArray' },
|
||||
{ text: 'isUndefined', link: '/ja/reference/predicate/isUndefined' },
|
||||
],
|
||||
},
|
||||
{
|
||||
text: 'Promise',
|
||||
items: [
|
||||
{ text: 'delay', link: '/ja/reference/promise/delay' },
|
||||
{ text: 'timeout', link: '/ja/reference/promise/timeout' },
|
||||
{ text: 'withTimeout', link: '/ja/reference/promise/withTimeout' },
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '文字列',
|
||||
items: [
|
||||
{ text: 'camelCase', link: '/ja/reference/string/camelCase' },
|
||||
{ text: 'snakeCase', link: '/ja/reference/string/snakeCase' },
|
||||
{ text: 'kebabCase', link: '/ja/reference/string/kebabCase' },
|
||||
{ text: 'lowerCase', link: '/ja/reference/string/lowerCase' },
|
||||
{ text: 'startCase', link: '/ja/reference/string/startCase' },
|
||||
{ text: 'pascalCase', link: '/ja/reference/string/pascalCase' },
|
||||
{ text: 'capitalize', link: '/ja/reference/string/capitalize' },
|
||||
{ text: 'startsWith (compat)', link: '/ja/reference/compat/string/startsWith' },
|
||||
{ text: 'endsWith (compat)', link: '/ja/reference/compat/string/endsWith' },
|
||||
{ text: 'padStart (compat)', link: '/ja/reference/compat/string/padStart' },
|
||||
{ text: 'padEnd (compat)', link: '/ja/reference/compat/string/padEnd' },
|
||||
],
|
||||
},
|
||||
{
|
||||
text: 'エラー',
|
||||
items: [
|
||||
{ text: 'AbortError', link: '/ja/reference/error/AbortError' },
|
||||
{ text: 'TimeoutError', link: '/ja/reference/error/TimeoutError' },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
export const search: DefaultTheme.LocalSearchOptions['locales'] = {
|
||||
ja: {
|
||||
translations: {
|
||||
button: {
|
||||
buttonText: '検索',
|
||||
buttonAriaLabel: '検索',
|
||||
},
|
||||
modal: {
|
||||
backButtonTitle: '戻る',
|
||||
displayDetails: '詳細を表示',
|
||||
footer: {
|
||||
closeKeyAriaLabel: '閉じる',
|
||||
closeText: '閉じる',
|
||||
navigateDownKeyAriaLabel: '下へ',
|
||||
navigateText: '移動',
|
||||
navigateUpKeyAriaLabel: '上へ',
|
||||
selectKeyAriaLabel: '選択',
|
||||
selectText: '選択',
|
||||
},
|
||||
noResultsText: '検索結果が見つかりませんでした。',
|
||||
resetButtonTitle: 'すべてクリア',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
36
docs/ja/bundle-size.md
Normal file
36
docs/ja/bundle-size.md
Normal file
@ -0,0 +1,36 @@
|
||||
---
|
||||
description: es-toolkitが持つ小さなバンドルサイズ
|
||||
---
|
||||
|
||||
# バンドルサイズ
|
||||
|
||||
![es-toolkitとlodashのバンドルサイズを比較するグラフ。es-toolkitは最大97%小さいバンドルサイズを持つ。](/assets/bundle-size.png)
|
||||
|
||||
es-toolkitは現代的な実装を持っているため、他のライブラリと比べて非常に小さなバンドルサイズを持っています。[lodash](https://lodash.com)と比較すると、関数によっては最大97%小さいサイズになります。
|
||||
|
||||
この観点から、es-toolkitはバンドルサイズを削減するのに最も効果的な選択肢です。いくつかのユーティリティ関数は100バイト未満のサイズです。
|
||||
|
||||
## バンドルサイズの比較
|
||||
|
||||
| | es-toolkit@0.0.1 | lodash-es@4.17.21 | Difference |
|
||||
| ------------------------------------------ | ---------------- | ----------------- | ---------- |
|
||||
| [sample](./reference/array/sample) | 88 bytes | 2000 bytes | -95.6% |
|
||||
| [difference](./reference/array/difference) | 91 bytes | 3190 bytes | -97.2% |
|
||||
| [sum](./reference/math/sum) | 152 bytes | 413 bytes | -63.2% |
|
||||
| [debounce](./reference/function/debounce) | 144 bytes | 1400 bytes | -89.7% |
|
||||
| [throttle](./reference/function/throttle) | 110 bytes | 1460 bytes | -92.5% |
|
||||
| [pick](./reference/object/pick) | 657 bytes | 3860 bytes | -83.0% |
|
||||
| [zip](./reference/array/zip) | 797 bytes | 1790 bytes | -55.5% |
|
||||
|
||||
## バンドルサイズの測定方法
|
||||
|
||||
[esbuild 0.23.0](https://esbuild.github.io)でバンドルサイズを測定しています。以下のようなコードを使用しています。
|
||||
|
||||
```tsx
|
||||
import { chunk } from 'es-toolkit';
|
||||
// または import { chunk } from 'lodash-es';
|
||||
|
||||
console.log(chunk);
|
||||
```
|
||||
|
||||
[バンドルサイズ測定ベンチマークコード](https://github.com/toss/es-toolkit/tree/main/benchmarks/bundle-size)を参照してください。
|
394
docs/ja/compatibility.md
Normal file
394
docs/ja/compatibility.md
Normal file
@ -0,0 +1,394 @@
|
||||
# Lodashとの互換性
|
||||
|
||||
```tsx
|
||||
// es-toolkit/compatはlodashと100%同じ動作を提供することを目指しています
|
||||
import { chunk } from 'es-toolkit/compat';
|
||||
|
||||
// es-toolkitは元々chunkのサイズとして0をサポートしていませんでした
|
||||
chunk([1, 2, 3, 4], 0);
|
||||
// es-toolkit/compatはlodashと同じ[]を返します
|
||||
```
|
||||
|
||||
`lodash`との最大の互換性を確保するために、2つのライブラリ間のギャップを埋める互換レイヤーである`es-toolkit/compat`を使用してください。
|
||||
|
||||
`es-toolkit`はスムーズなマイグレーションを保証するために、2つのライブラリ間の動作の違いがない`es-toolkit/compat`ライブラリを開発しています。`lodash`と同じAPIと機能を提供し、スムーズにマイグレーションできるようサポートする予定です。
|
||||
|
||||
`es-toolkit/compat`は実際の`lodash`テストコードを使用してテストされます。
|
||||
|
||||
`es-toolkit/compat`は、元の`es-toolkit`と比較して若干のパフォーマンス低下とバンドルサイズの増加があることに注意してください。このモジュールはスムーズな移行を支援するために設計されており、移行が完了したら最適なパフォーマンスを得るために元の`es-toolkit`に置き換えるべきです。
|
||||
|
||||
## デザイン原則
|
||||
|
||||
::: info
|
||||
デザイン原則は変更される可能性があります。
|
||||
:::
|
||||
|
||||
`es-toolkit/compat`は以下のような機能について`lodash`と100%同じ機能を提供することを目指しています。
|
||||
|
||||
- `lodash`のテストケースで作成された機能
|
||||
- `@types/lodash`または`@types/lodash-es`の型から推論できる機能
|
||||
|
||||
以下のような機能は`es-toolkit/compat`ではサポートしていません。
|
||||
|
||||
- 空文字列を0またはfalseに変換するような暗黙的な型変換
|
||||
- [sortedUniq](https://lodash.com/docs/4.17.15#sortedUniq)のような特定のタイプの配列に特化した実装を持つ関数
|
||||
- `Array.prototype`のようなJavaScriptの組み込みオブジェクトのプロトタイプが変更された場合に対応するコード
|
||||
- JavaScript Realmに対応するコード
|
||||
- `_(arr).map(...).filter(...)`のような"Seq"メソッドを通じたメソッドチェーンのサポート
|
||||
|
||||
## 実装ステータス
|
||||
|
||||
::: info
|
||||
以下の絵文字は各機能の実装ステータスを示しています:
|
||||
|
||||
- ✅: 完了(関数は完全に実装され、lodashのテストコードで全てのテストに合格しています。)
|
||||
- 📝: レビュー中(関数は実装されていますが、まだlodashのテストコードでテストされていません。)
|
||||
- ❌: 未実装(関数はまだ実装されていません。)
|
||||
|
||||
"レビュー中"と表示されていても、完全に同じか確認しているだけですでに同じ機能を提供しているかもしれません。
|
||||
:::
|
||||
|
||||
### "Array" メソッド
|
||||
|
||||
| Function Name | Implementation Status |
|
||||
| ---------------------------------------------------------------------- | --------------------- |
|
||||
| [chunk](https://lodash.com/docs/4.17.15#chunk) | ✅ |
|
||||
| [compact](https://lodash.com/docs/4.17.15#compact) | ✅ |
|
||||
| [concat](https://lodash.com/docs/4.17.15#concat) | ✅ |
|
||||
| [difference](https://lodash.com/docs/4.17.15#difference) | ✅ |
|
||||
| [differenceBy](https://lodash.com/docs/4.17.15#differenceBy) | 📝 |
|
||||
| [differenceWith](https://lodash.com/docs/4.17.15#differenceWith) | 📝 |
|
||||
| [drop](https://lodash.com/docs/4.17.15#drop) | ✅ |
|
||||
| [dropRight](https://lodash.com/docs/4.17.15#dropRight) | ✅ |
|
||||
| [dropRightWhile](https://lodash.com/docs/4.17.15#dropRightWhile) | 📝 |
|
||||
| [dropWhile](https://lodash.com/docs/4.17.15#dropWhile) | 📝 |
|
||||
| [fill](https://lodash.com/docs/4.17.15#fill) | ✅ |
|
||||
| [findIndex](https://lodash.com/docs/4.17.15#findIndex) | ✅ |
|
||||
| [findLastIndex](https://lodash.com/docs/4.17.15#findIndex) | ❌ |
|
||||
| [flatten](https://lodash.com/docs/4.17.15#flatten) | ✅ |
|
||||
| [flattenDeep](https://lodash.com/docs/4.17.15#flattenDeep) | ✅ |
|
||||
| [flattenDepth](https://lodash.com/docs/4.17.15#flattenDepth) | ✅ |
|
||||
| [fromPairs](https://lodash.com/docs/4.17.15#fromPairs) | ❌ |
|
||||
| [head](https://lodash.com/docs/4.17.15#head) | ✅ |
|
||||
| [indexOf](https://lodash.com/docs/4.17.15#indexOf) | ✅ |
|
||||
| [initial](https://lodash.com/docs/4.17.15#initial) | ✅ |
|
||||
| [intersection](https://lodash.com/docs/4.17.15#intersection) | 📝 |
|
||||
| [intersectionBy](https://lodash.com/docs/4.17.15#intersectionBy) | 📝 |
|
||||
| [intersectionWith](https://lodash.com/docs/4.17.15#intersectionWith) | 📝 |
|
||||
| [join](https://lodash.com/docs/4.17.15#join) | ❌ |
|
||||
| [last](https://lodash.com/docs/4.17.15#last) | ✅ |
|
||||
| [lastIndexOf](https://lodash.com/docs/4.17.15#lastIndexOf) | ❌ |
|
||||
| [nth](https://lodash.com/docs/4.17.15#nth) | ❌ |
|
||||
| [pull](https://lodash.com/docs/4.17.15#pull) | ❌ |
|
||||
| [pullAll](https://lodash.com/docs/4.17.15#pullAll) | ❌ |
|
||||
| [pullAllBy](https://lodash.com/docs/4.17.15#pullAllBy) | ❌ |
|
||||
| [pullAllWith](https://lodash.com/docs/4.17.15#pullAllWith) | ❌ |
|
||||
| [pullAt](https://lodash.com/docs/4.17.15#pullAt) | ❌ |
|
||||
| [remove](https://lodash.com/docs/4.17.15#remove) | ❌ |
|
||||
| [reverse](https://lodash.com/docs/4.17.15#reverse) | ❌ |
|
||||
| [slice](https://lodash.com/docs/4.17.15#slice) | ❌ |
|
||||
| [sortedIndex](https://lodash.com/docs/4.17.15#sortedIndex) | No support |
|
||||
| [sortedIndexBy](https://lodash.com/docs/4.17.15#sortedIndexBy) | No support |
|
||||
| [sortedIndexOf](https://lodash.com/docs/4.17.15#sortedIndexOf) | No support |
|
||||
| [sortedLastIndex](https://lodash.com/docs/4.17.15#sortedLastIndex) | No support |
|
||||
| [sortedLastIndexBy](https://lodash.com/docs/4.17.15#sortedLastIndexBy) | No support |
|
||||
| [sortedLastIndexOf](https://lodash.com/docs/4.17.15#sortedLastIndexOf) | No support |
|
||||
| [sortedUniq](https://lodash.com/docs/4.17.15#sortedUniq) | No support |
|
||||
| [sortedUniqBy](https://lodash.com/docs/4.17.15#sortedUniqBy) | No support |
|
||||
| [tail](https://lodash.com/docs/4.17.15#tail) | ✅ |
|
||||
| [take](https://lodash.com/docs/4.17.15#take) | ✅ |
|
||||
| [takeRight](https://lodash.com/docs/4.17.15#takeRight) | ✅ |
|
||||
| [takeRightWhile](https://lodash.com/docs/4.17.15#takeRightWhile) | 📝 |
|
||||
| [takeWhile](https://lodash.com/docs/4.17.15#takeWhile) | 📝 |
|
||||
| [union](https://lodash.com/docs/4.17.15#union) | 📝 |
|
||||
| [unionBy](https://lodash.com/docs/4.17.15#unionBy) | 📝 |
|
||||
| [unionWith](https://lodash.com/docs/4.17.15#unionWith) | 📝 |
|
||||
| [uniq](https://lodash.com/docs/4.17.15#uniq) | ✅ |
|
||||
| [uniqBy](https://lodash.com/docs/4.17.15#uniqBy) | 📝 |
|
||||
| [uniqWith](https://lodash.com/docs/4.17.15#uniqWith) | 📝 |
|
||||
| [unzip](https://lodash.com/docs/4.17.15#unzip) | 📝 |
|
||||
| [unzipWith](https://lodash.com/docs/4.17.15#unzipWith) | 📝 |
|
||||
| [without](https://lodash.com/docs/4.17.15#without) | ✅ |
|
||||
| [xor](https://lodash.com/docs/4.17.15#xor) | 📝 |
|
||||
| [xorBy](https://lodash.com/docs/4.17.15#xorBy) | 📝 |
|
||||
| [xorWith](https://lodash.com/docs/4.17.15#xorWith) | 📝 |
|
||||
| [zip](https://lodash.com/docs/4.17.15#zip) | 📝 |
|
||||
| [zipObject](https://lodash.com/docs/4.17.15#zipObject) | 📝 |
|
||||
| [zipObjectDeep](https://lodash.com/docs/4.17.15#zipObjectDeep) | ✅ |
|
||||
| [zipWith](https://lodash.com/docs/4.17.15#zipWith) | 📝 |
|
||||
|
||||
### "Collection" メソッド
|
||||
|
||||
| Function Name | Implementation Status |
|
||||
| ------------------------------------------------------------ | --------------------- |
|
||||
| [countBy](https://lodash.com/docs/4.17.15#countBy) | 📝 |
|
||||
| [every](https://lodash.com/docs/4.17.15#every) | ❌ |
|
||||
| [filter](https://lodash.com/docs/4.17.15#filter) | ❌ |
|
||||
| [find](https://lodash.com/docs/4.17.15#find) | ❌ |
|
||||
| [findLast](https://lodash.com/docs/4.17.15#findLast) | ❌ |
|
||||
| [flatMap](https://lodash.com/docs/4.17.15#flatMap) | ❌ |
|
||||
| [flatMapDeep](https://lodash.com/docs/4.17.15#flatMapDeep) | ❌ |
|
||||
| [flatMapDepth](https://lodash.com/docs/4.17.15#flatMapDepth) | ❌ |
|
||||
| [forEach](https://lodash.com/docs/4.17.15#forEach) | ❌ |
|
||||
| [forEachRight](https://lodash.com/docs/4.17.15#forEachRight) | ❌ |
|
||||
| [groupBy](https://lodash.com/docs/4.17.15#groupBy) | 📝 |
|
||||
| [includes](https://lodash.com/docs/4.17.15#includes) | ❌ |
|
||||
| [invokeMap](https://lodash.com/docs/4.17.15#invokeMap) | ❌ |
|
||||
| [keyBy](https://lodash.com/docs/4.17.15#keyBy) | 📝 |
|
||||
| [map](https://lodash.com/docs/4.17.15#map) | ❌ |
|
||||
| [orderBy](https://lodash.com/docs/4.17.15#orderBy) | ✅ |
|
||||
| [partition](https://lodash.com/docs/4.17.15#partition) | 📝 |
|
||||
| [reduce](https://lodash.com/docs/4.17.15#reduce) | ❌ |
|
||||
| [reduceRight](https://lodash.com/docs/4.17.15#reduceRight) | ❌ |
|
||||
| [reject](https://lodash.com/docs/4.17.15#reject) | ❌ |
|
||||
| [sample](https://lodash.com/docs/4.17.15#sample) | 📝 |
|
||||
| [sampleSize](https://lodash.com/docs/4.17.15#sampleSize) | 📝 |
|
||||
| [shuffle](https://lodash.com/docs/4.17.15#shuffle) | 📝 |
|
||||
| [size](https://lodash.com/docs/4.17.15#size) | ✅ |
|
||||
| [some](https://lodash.com/docs/4.17.15#some) | ❌ |
|
||||
| [sortBy](https://lodash.com/docs/4.17.15#sortBy) | ❌ |
|
||||
|
||||
### "Date" メソッド
|
||||
|
||||
| Function Name | Implementation Status |
|
||||
| ------------------------------------------ | --------------------- |
|
||||
| [now](https://lodash.com/docs/4.17.15#now) | ❌ |
|
||||
|
||||
### "Function" メソッド
|
||||
|
||||
| Function Name | Implementation Status |
|
||||
| ------------------------------------------------------------ | --------------------- |
|
||||
| [after](https://lodash.com/docs/4.17.15#after) | 📝 |
|
||||
| [ary](https://lodash.com/docs/4.17.15#ary) | 📝 |
|
||||
| [before](https://lodash.com/docs/4.17.15#before) | ❌ |
|
||||
| [bind](https://lodash.com/docs/4.17.15#bind) | ✅ |
|
||||
| [bindKey](https://lodash.com/docs/4.17.15#bindKey) | ❌ |
|
||||
| [curry](https://lodash.com/docs/4.17.15#curry) | ❌ |
|
||||
| [curryRight](https://lodash.com/docs/4.17.15#curryRight) | ❌ |
|
||||
| [debounce](https://lodash.com/docs/4.17.15#debounce) | 📝 |
|
||||
| [defer](https://lodash.com/docs/4.17.15#defer) | ❌ |
|
||||
| [delay](https://lodash.com/docs/4.17.15#delay) | ❌ |
|
||||
| [flip](https://lodash.com/docs/4.17.15#flip) | ❌ |
|
||||
| [memoize](https://lodash.com/docs/4.17.15#memoize) | ❌ |
|
||||
| [negate](https://lodash.com/docs/4.17.15#negate) | 📝 |
|
||||
| [once](https://lodash.com/docs/4.17.15#once) | 📝 |
|
||||
| [overArgs](https://lodash.com/docs/4.17.15#overArgs) | ❌ |
|
||||
| [partial](https://lodash.com/docs/4.17.15#partial) | 📝 |
|
||||
| [partialRight](https://lodash.com/docs/4.17.15#partialRight) | 📝 |
|
||||
| [rearg](https://lodash.com/docs/4.17.15#rearg) | ❌ |
|
||||
| [rest](https://lodash.com/docs/4.17.15#rest) | ✅ |
|
||||
| [spread](https://lodash.com/docs/4.17.15#spread) | ❌ |
|
||||
| [throttle](https://lodash.com/docs/4.17.15#throttle) | 📝 |
|
||||
| [unary](https://lodash.com/docs/4.17.15#unary) | 📝 |
|
||||
| [wrap](https://lodash.com/docs/4.17.15#wrap) | ❌ |
|
||||
|
||||
### "Lang" methods
|
||||
|
||||
| Function Name | Implementation Status |
|
||||
| ---------------------------------------------------------------------- | --------------------- |
|
||||
| [castArray](https://lodash.com/docs/4.17.15#castArray) | ❌ |
|
||||
| [clone](https://lodash.com/docs/4.17.15#clone) | 📝 |
|
||||
| [cloneDeep](https://lodash.com/docs/4.17.15#cloneDeep) | ✅ |
|
||||
| [cloneDeepWith](https://lodash.com/docs/4.17.15#cloneDeepWith) | ❌ |
|
||||
| [cloneWith](https://lodash.com/docs/4.17.15#cloneWith) | ❌ |
|
||||
| [conformsTo](https://lodash.com/docs/4.17.15#conformsTo) | ❌ |
|
||||
| [eq](https://lodash.com/docs/4.17.15#eq) | ❌ |
|
||||
| [gt](https://lodash.com/docs/4.17.15#gt) | ❌ |
|
||||
| [gte](https://lodash.com/docs/4.17.15#gte) | ❌ |
|
||||
| [isArguments](https://lodash.com/docs/4.17.15#isArguments) | ✅ |
|
||||
| [isArray](https://lodash.com/docs/4.17.15#isArray) | ✅ |
|
||||
| [isArrayBuffer](https://lodash.com/docs/4.17.15#isArrayBuffer) | ❌ |
|
||||
| [isArrayLike](https://lodash.com/docs/4.17.15#isArrayLike) | ✅ |
|
||||
| [isArrayLikeObject](https://lodash.com/docs/4.17.15#isArrayLikeObject) | ❌ |
|
||||
| [isBoolean](https://lodash.com/docs/4.17.15#isBoolean) | ✅ |
|
||||
| [isBuffer](https://lodash.com/docs/4.17.15#isBuffer) | ❌ |
|
||||
| [isDate](https://lodash.com/docs/4.17.15#isDate) | ❌ |
|
||||
| [isElement](https://lodash.com/docs/4.17.15#isElement) | ❌ |
|
||||
| [isEmpty](https://lodash.com/docs/4.17.15#isEmpty) | ❌ |
|
||||
| [isEqual](https://lodash.com/docs/4.17.15#isEqual) | ✅ |
|
||||
| [isEqualWith](https://lodash.com/docs/4.17.15#isEqualWith) | ❌ |
|
||||
| [isError](https://lodash.com/docs/4.17.15#isError) | ❌ |
|
||||
| [isFinite](https://lodash.com/docs/4.17.15#isFinite) | ❌ |
|
||||
| [isFunction](https://lodash.com/docs/4.17.15#isFunction) | ✅ |
|
||||
| [isInteger](https://lodash.com/docs/4.17.15#isInteger) | ❌ |
|
||||
| [isLength](https://lodash.com/docs/4.17.15#isLength) | ✅ |
|
||||
| [isMap](https://lodash.com/docs/4.17.15#isMap) | ❌ |
|
||||
| [isMatch](https://lodash.com/docs/4.17.15#isMatch) | ✅ |
|
||||
| [isMatchWith](https://lodash.com/docs/4.17.15#isMatchWith) | ❌ |
|
||||
| [isNaN](https://lodash.com/docs/4.17.15#isNaN) | ❌ |
|
||||
| [isNative](https://lodash.com/docs/4.17.15#isNative) | ❌ |
|
||||
| [isNil](https://lodash.com/docs/4.17.15#isNil) | 📝 |
|
||||
| [isNull](https://lodash.com/docs/4.17.15#isNull) | ✅ |
|
||||
| [isNumber](https://lodash.com/docs/4.17.15#isNumber) | ❌ |
|
||||
| [isObject](https://lodash.com/docs/4.17.15#isObject) | ❌ |
|
||||
| [isObjectLike](https://lodash.com/docs/4.17.15#isObjectLike) | ✅ |
|
||||
| [isPlainObject](https://lodash.com/docs/4.17.15#isPlainObject) | ✅ |
|
||||
| [isRegExp](https://lodash.com/docs/4.17.15#isRegExp) | ✅ |
|
||||
| [isSafeInteger](https://lodash.com/docs/4.17.15#isSafeInteger) | ❌ |
|
||||
| [isSet](https://lodash.com/docs/4.17.15#isSet) | ❌ |
|
||||
| [isString](https://lodash.com/docs/4.17.15#isString) | ✅ |
|
||||
| [isSymbol](https://lodash.com/docs/4.17.15#isSymbol) | ✅ |
|
||||
| [isTypedArray](https://lodash.com/docs/4.17.15#isTypedArray) | ✅ |
|
||||
| [isUndefined](https://lodash.com/docs/4.17.15#isUndefined) | ✅ |
|
||||
| [isWeakMap](https://lodash.com/docs/4.17.15#isWeakMap) | ❌ |
|
||||
| [isWeakSet](https://lodash.com/docs/4.17.15#isWeakSet) | ❌ |
|
||||
| [lt](https://lodash.com/docs/4.17.15#lt) | ❌ |
|
||||
| [lte](https://lodash.com/docs/4.17.15#lte) | ❌ |
|
||||
| [toArray](https://lodash.com/docs/4.17.15#toArray) | ❌ |
|
||||
| [toFinite](https://lodash.com/docs/4.17.15#toFinite) | ❌ |
|
||||
| [toInteger](https://lodash.com/docs/4.17.15#toInteger) | ❌ |
|
||||
| [toLength](https://lodash.com/docs/4.17.15#toLength) | ❌ |
|
||||
| [toNumber](https://lodash.com/docs/4.17.15#toNumber) | ❌ |
|
||||
| [toPlainObject](https://lodash.com/docs/4.17.15#toPlainObject) | ❌ |
|
||||
| [toSafeInteger](https://lodash.com/docs/4.17.15#toSafeInteger) | ❌ |
|
||||
| [toString](https://lodash.com/docs/4.17.15#toString) | ❌ |
|
||||
|
||||
### "Math" メソッド
|
||||
|
||||
| Function Name | Implementation Status |
|
||||
| ---------------------------------------------------- | --------------------- |
|
||||
| [add](https://lodash.com/docs/4.17.15#add) | ❌ |
|
||||
| [ceil](https://lodash.com/docs/4.17.15#ceil) | ❌ |
|
||||
| [divide](https://lodash.com/docs/4.17.15#divide) | ❌ |
|
||||
| [floor](https://lodash.com/docs/4.17.15#floor) | ❌ |
|
||||
| [max](https://lodash.com/docs/4.17.15#max) | ✅ |
|
||||
| [maxBy](https://lodash.com/docs/4.17.15#maxBy) | 📝 |
|
||||
| [mean](https://lodash.com/docs/4.17.15#mean) | 📝 |
|
||||
| [meanBy](https://lodash.com/docs/4.17.15#meanBy) | 📝 |
|
||||
| [min](https://lodash.com/docs/4.17.15#min) | ✅ |
|
||||
| [minBy](https://lodash.com/docs/4.17.15#minBy) | 📝 |
|
||||
| [multiply](https://lodash.com/docs/4.17.15#multiply) | ❌ |
|
||||
| [round](https://lodash.com/docs/4.17.15#round) | ❌ |
|
||||
| [subtract](https://lodash.com/docs/4.17.15#subtract) | ❌ |
|
||||
| [sum](https://lodash.com/docs/4.17.15#sum) | 📝 |
|
||||
| [sumBy](https://lodash.com/docs/4.17.15#sumBy) | ❌ |
|
||||
|
||||
### "Number" メソッド
|
||||
|
||||
| Function Name | Implementation Status |
|
||||
| -------------------------------------------------- | --------------------- |
|
||||
| [clamp](https://lodash.com/docs/4.17.15#clamp) | 📝 |
|
||||
| [inRange](https://lodash.com/docs/4.17.15#inRange) | 📝 |
|
||||
| [random](https://lodash.com/docs/4.17.15#random) | 📝 |
|
||||
|
||||
### "Object" メソッド
|
||||
|
||||
| Function Name | Implementation Status |
|
||||
| ------------------------------------------------------------ | --------------------- |
|
||||
| [assign](https://lodash.com/docs/4.17.15#assign) | ❌ |
|
||||
| [assignIn](https://lodash.com/docs/4.17.15#assignIn) | ❌ |
|
||||
| [assignInWith](https://lodash.com/docs/4.17.15#assignInWith) | ❌ |
|
||||
| [assignWith](https://lodash.com/docs/4.17.15#assignWith) | ❌ |
|
||||
| [at](https://lodash.com/docs/4.17.15#at) | ❌ |
|
||||
| [create](https://lodash.com/docs/4.17.15#create) | ❌ |
|
||||
| [defaults](https://lodash.com/docs/4.17.15#defaults) | ❌ |
|
||||
| [defaultsDeep](https://lodash.com/docs/4.17.15#defaultsDeep) | ❌ |
|
||||
| [findKey](https://lodash.com/docs/4.17.15#findKey) | ❌ |
|
||||
| [findLastKey](https://lodash.com/docs/4.17.15#findLastKey) | ❌ |
|
||||
| [forIn](https://lodash.com/docs/4.17.15#forIn) | ❌ |
|
||||
| [forInRight](https://lodash.com/docs/4.17.15#forInRight) | ❌ |
|
||||
| [forOwn](https://lodash.com/docs/4.17.15#forOwn) | ❌ |
|
||||
| [forOwnRight](https://lodash.com/docs/4.17.15#forOwnRight) | ❌ |
|
||||
| [functions](https://lodash.com/docs/4.17.15#functions) | ❌ |
|
||||
| [functionsIn](https://lodash.com/docs/4.17.15#functionsIn) | ❌ |
|
||||
| [get](https://lodash.com/docs/4.17.15#get) | ✅ |
|
||||
| [has](https://lodash.com/docs/4.17.15#has) | ✅ |
|
||||
| [hasIn](https://lodash.com/docs/4.17.15#hasIn) | ❌ |
|
||||
| [invert](https://lodash.com/docs/4.17.15#invert) | ✅ |
|
||||
| [invertBy](https://lodash.com/docs/4.17.15#invertBy) | ❌ |
|
||||
| [invoke](https://lodash.com/docs/4.17.15#invoke) | ❌ |
|
||||
| [keys](https://lodash.com/docs/4.17.15#keys) | ❌ |
|
||||
| [keysIn](https://lodash.com/docs/4.17.15#keysIn) | ❌ |
|
||||
| [mapKeys](https://lodash.com/docs/4.17.15#mapKeys) | ✅ |
|
||||
| [mapValues](https://lodash.com/docs/4.17.15#mapValues) | ✅ |
|
||||
| [merge](https://lodash.com/docs/4.17.15#merge) | ✅ |
|
||||
| [mergeWith](https://lodash.com/docs/4.17.15#mergeWith) | ✅ |
|
||||
| [omit](https://lodash.com/docs/4.17.15#omit) | 📝 |
|
||||
| [omitBy](https://lodash.com/docs/4.17.15#omitBy) | 📝 |
|
||||
| [pick](https://lodash.com/docs/4.17.15#pick) | 📝 |
|
||||
| [pickBy](https://lodash.com/docs/4.17.15#pickBy) | 📝 |
|
||||
| [result](https://lodash.com/docs/4.17.15#result) | ❌ |
|
||||
| [set](https://lodash.com/docs/4.17.15#set) | ✅ |
|
||||
| [setWith](https://lodash.com/docs/4.17.15#setWith) | ❌ |
|
||||
| [toPairs](https://lodash.com/docs/4.17.15#toPairs) | ❌ |
|
||||
| [toPairsIn](https://lodash.com/docs/4.17.15#toPairsIn) | ❌ |
|
||||
| [transform](https://lodash.com/docs/4.17.15#transform) | ❌ |
|
||||
| [unset](https://lodash.com/docs/4.17.15#unset) | ❌ |
|
||||
| [update](https://lodash.com/docs/4.17.15#update) | ❌ |
|
||||
| [updateWith](https://lodash.com/docs/4.17.15#updateWith) | ❌ |
|
||||
| [values](https://lodash.com/docs/4.17.15#values) | ❌ |
|
||||
| [valuesIn](https://lodash.com/docs/4.17.15#valuesIn) | ❌ |
|
||||
|
||||
### "String" メソッド
|
||||
|
||||
| Function Name | Implementation Status |
|
||||
| ------------------------------------------------------------ | --------------------- |
|
||||
| [camelCase](https://lodash.com/docs/4.17.15#camelCase) | 📝 |
|
||||
| [capitalize](https://lodash.com/docs/4.17.15#capitalize) | 📝 |
|
||||
| [deburr](https://lodash.com/docs/4.17.15#deburr) | ❌ |
|
||||
| [endsWith](https://lodash.com/docs/4.17.15#endsWith) | ✅ |
|
||||
| [escape](https://lodash.com/docs/4.17.15#escape) | ❌ |
|
||||
| [escapeRegExp](https://lodash.com/docs/4.17.15#escapeRegExp) | ❌ |
|
||||
| [kebabCase](https://lodash.com/docs/4.17.15#kebabCase) | 📝 |
|
||||
| [lowerCase](https://lodash.com/docs/4.17.15#lowerCase) | 📝 |
|
||||
| [lowerFirst](https://lodash.com/docs/4.17.15#lowerFirst) | ✅ |
|
||||
| [pad](https://lodash.com/docs/4.17.15#pad) | ❌ |
|
||||
| [padEnd](https://lodash.com/docs/4.17.15#padEnd) | ❌ |
|
||||
| [padStart](https://lodash.com/docs/4.17.15#padStart) | ❌ |
|
||||
| [parseInt](https://lodash.com/docs/4.17.15#parseInt) | ❌ |
|
||||
| [repeat](https://lodash.com/docs/4.17.15#repeat) | ❌ |
|
||||
| [replace](https://lodash.com/docs/4.17.15#replace) | ❌ |
|
||||
| [snakeCase](https://lodash.com/docs/4.17.15#snakeCase) | 📝 |
|
||||
| [split](https://lodash.com/docs/4.17.15#split) | ❌ |
|
||||
| [startCase](https://lodash.com/docs/4.17.15#startCase) | ❌ |
|
||||
| [startsWith](https://lodash.com/docs/4.17.15#startsWith) | ✅ |
|
||||
| [template](https://lodash.com/docs/4.17.15#template) | ❌ |
|
||||
| [toLower](https://lodash.com/docs/4.17.15#toLower) | ❌ |
|
||||
| [toUpper](https://lodash.com/docs/4.17.15#toUpper) | ❌ |
|
||||
| [trim](https://lodash.com/docs/4.17.15#trim) | ❌ |
|
||||
| [trimEnd](https://lodash.com/docs/4.17.15#trimEnd) | ❌ |
|
||||
| [trimStart](https://lodash.com/docs/4.17.15#trimStart) | ❌ |
|
||||
| [truncate](https://lodash.com/docs/4.17.15#truncate) | ❌ |
|
||||
| [unescape](https://lodash.com/docs/4.17.15#unescape) | ❌ |
|
||||
| [upperCase](https://lodash.com/docs/4.17.15#upperCase) | 📝 |
|
||||
| [upperFirst](https://lodash.com/docs/4.17.15#upperFirst) | ✅ |
|
||||
| [words](https://lodash.com/docs/4.17.15#words) | ❌ |
|
||||
|
||||
### "Util" メソッド
|
||||
|
||||
| Function Name | Implementation Status |
|
||||
| ------------------------------------------------------------------ | --------------------- |
|
||||
| [attempt](https://lodash.com/docs/4.17.15#attempt) | ❌ |
|
||||
| [bindAll](https://lodash.com/docs/4.17.15#bindAll) | ❌ |
|
||||
| [cond](https://lodash.com/docs/4.17.15#cond) | ❌ |
|
||||
| [confirms](https://lodash.com/docs/4.17.15#confirms) | ❌ |
|
||||
| [constant](https://lodash.com/docs/4.17.15#constant) | ❌ |
|
||||
| [defaultTo](https://lodash.com/docs/4.17.15#defaultTo) | ❌ |
|
||||
| [flow](https://lodash.com/docs/4.17.15#flow) | ❌ |
|
||||
| [flowRight](https://lodash.com/docs/4.17.15#flowRight) | ❌ |
|
||||
| [identity](https://lodash.com/docs/4.17.15#identity) | 📝 |
|
||||
| [iteratee](https://lodash.com/docs/4.17.15#iteratee) | ❌ |
|
||||
| [matches](https://lodash.com/docs/4.17.15#matches) | ✅ |
|
||||
| [matchesProperty](https://lodash.com/docs/4.17.15#matchesProperty) | ✅ |
|
||||
| [method](https://lodash.com/docs/4.17.15#method) | ❌ |
|
||||
| [methodOf](https://lodash.com/docs/4.17.15#methodOf) | ❌ |
|
||||
| [mixin](https://lodash.com/docs/4.17.15#mixin) | No support |
|
||||
| [noConflict](https://lodash.com/docs/4.17.15#noConflict) | No support |
|
||||
| [noop](https://lodash.com/docs/4.17.15#noop) | ❌ |
|
||||
| [nthArg](https://lodash.com/docs/4.17.15#nthArg) | ❌ |
|
||||
| [over](https://lodash.com/docs/4.17.15#over) | ❌ |
|
||||
| [overEvery](https://lodash.com/docs/4.17.15#overEvery) | ❌ |
|
||||
| [overSome](https://lodash.com/docs/4.17.15#overSome) | ❌ |
|
||||
| [property](https://lodash.com/docs/4.17.15#property) | ✅ |
|
||||
| [propertyOf](https://lodash.com/docs/4.17.15#propertyOf) | ❌ |
|
||||
| [range](https://lodash.com/docs/4.17.15#range) | 📝 |
|
||||
| [rangeRight](https://lodash.com/docs/4.17.15#rangeRight) | 📝 |
|
||||
| [runInContext](https://lodash.com/docs/4.17.15#runInContext) | No support |
|
||||
| [stubArray](https://lodash.com/docs/4.17.15#stubArray) | ❌ |
|
||||
| [stubFalse](https://lodash.com/docs/4.17.15#stubFalse) | ❌ |
|
||||
| [stubObject](https://lodash.com/docs/4.17.15#stubObject) | ❌ |
|
||||
| [stubString](https://lodash.com/docs/4.17.15#stubString) | ❌ |
|
||||
| [stubTrue](https://lodash.com/docs/4.17.15#stubTrue) | ❌ |
|
||||
| [times](https://lodash.com/docs/4.17.15#times) | ❌ |
|
||||
| [toPath](https://lodash.com/docs/4.17.15#toPath) | ❌ |
|
||||
| [uniqueId](https://lodash.com/docs/4.17.15#uniqueId) | ❌ |
|
33
docs/ja/index.md
Normal file
33
docs/ja/index.md
Normal file
@ -0,0 +1,33 @@
|
||||
---
|
||||
# https://vitepress.dev/reference/default-theme-home-page
|
||||
layout: home
|
||||
|
||||
hero:
|
||||
name: 'es-toolkit'
|
||||
text: '最先端のJavaScriptユーティリティライブラリ'
|
||||
# tagline:
|
||||
actions:
|
||||
- theme: brand
|
||||
text: es-toolkitを知る
|
||||
link: /ja/intro
|
||||
- theme: alt
|
||||
text: リファレンス
|
||||
link: /ja/reference/array/chunk
|
||||
- theme: alt
|
||||
text: インストールと使用方法
|
||||
link: /ja/usage
|
||||
|
||||
features:
|
||||
- title: 高速なパフォーマンス
|
||||
details: 同様の機能を提供する他のライブラリと比較して、平均2-3倍高速な実行時パフォーマンスを提供します。
|
||||
- title: 小さなバンドルサイズ
|
||||
details: 同等の機能を持つ関数を基準に、最大97%小さなJavaScriptサイズを実現しています。
|
||||
- title: モダンな実装
|
||||
details: 最新のJavaScript APIを使用しているため、実装が直感的でシンプルです。
|
||||
- title: 堅牢な型定義
|
||||
details: すべての関数に対してシンプルながら堅牢な型定義を提供しています。
|
||||
- title: テストカバレッジ100%
|
||||
details: すべての関数とブランチに対して、綿密なテストが作成されています。
|
||||
- title: あらゆる環境で使用可能
|
||||
details: Node.js、Deno、Bun、そしてブラウザまで、幅広いJavaScript環境をサポートしています。
|
||||
---
|
25
docs/ja/intro.md
Normal file
25
docs/ja/intro.md
Normal file
@ -0,0 +1,25 @@
|
||||
# es-toolkitの紹介
|
||||
|
||||
es-toolkitは、日常的な開発で使用する様々な関数を集めた最先端のJavaScriptユーティリティライブラリです。
|
||||
|
||||
[lodash](https://lodash.com/)のような他のライブラリと比較して、es-toolkitは[同じ関数基準で最大97%小さいバンドルサイズ](./bundle-size.md)を提供し、[2〜3倍高速に](./performance.md)動作します。最新のJavaScript APIを活用して現代的に実装したおかげです。
|
||||
|
||||
es-toolkitは堅固なTypeScriptタイプを内蔵して提供し、信頼性を高めるために100%テストカバレッジを目指しています。
|
||||
|
||||
## 提供する機能
|
||||
|
||||
es-toolkitが提供する機能リストは以下の通りです:
|
||||
|
||||
- **Array**: 配列操作のためのユーティリティ、例えば [uniq](./reference/array/uniq.md) や [difference](./reference/array/difference.md) など。
|
||||
- **Function**: 関数の実行を制御するためのツール、例えば [debounce](./reference/function/debounce.md) や [throttle](./reference/function/throttle.md) など。
|
||||
- **Math**: 数値操作のためのユーティリティ、例えば [sum](./reference/math/sum.md) や [round](./reference/math/round.md) など。
|
||||
- **Object**: JavaScriptオブジェクトを操作するためのツール、例えば [pick](./reference/object/pick.md) や [omit](./reference/object/omit.md) など。
|
||||
- **Predicate**: 型ガード関数、例えば [isNotNil](./reference/predicate/isNotNil.md) など。
|
||||
- **Promise**: 非同期操作のためのユーティリティ、例えば [delay](./reference/promise/delay.md) など。
|
||||
- **String**: 文字列操作のためのユーティリティ、例えば [snakeCase](./reference/string/snakeCase.md) など。
|
||||
|
||||
## リンク
|
||||
|
||||
このプロジェクトについてより多くの情報を得るには、以下のリンクを参照してください:
|
||||
|
||||
- [GitHub](https://github.com/toss/es-toolkit)
|
26
docs/ja/performance.md
Normal file
26
docs/ja/performance.md
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
description: es-toolkitと他のライブラリのパフォーマンスの違い
|
||||
---
|
||||
|
||||
# パフォーマンス
|
||||
|
||||
![es-toolkitとlodashのパフォーマンスの違いを示すグラフ。es-toolkitを使用すると、最大11倍のパフォーマンス向上が得られます。](/assets/performance.png)
|
||||
|
||||
パフォーマンスを重視して設計されたes-toolkitは、lodashのような他のライブラリと比較して平均2倍のパフォーマンス向上を提供します。いくつかの関数は、最新のJavaScript APIを完全に活用することで、最大11倍のパフォーマンス向上を達成します。
|
||||
|
||||
## パフォーマンス比較
|
||||
|
||||
| | es-toolkit@0.0.1 | lodash-es@4.17.21 | Difference |
|
||||
| --------------------------------------------------------- | ---------------- | ----------------- | ---------- |
|
||||
| [omit](./reference/object/omit.md) | 4,767,360 times | 403,624 times | 11.8× |
|
||||
| [pick](./reference/object/pick.md) | 9,121,839 times | 2,663,072 times | 3.43× |
|
||||
| [differenceWith](./reference/array/differenceWith.md) | 9,291,897 times | 4,275,222 times | 2.17× |
|
||||
| [difference](./reference/array/difference.md) | 10,436,101 times | 5,155,631 times | 2.02× |
|
||||
| [intersectionWith](./reference/array/intersectionWith.md) | 8,074,722 times | 3,814,479 times | 2.12× |
|
||||
| [intersection](./reference/array/intersection.md) | 9,999,571 times | 4,630,316 times | 2.15× |
|
||||
| [unionBy](./reference/array/unionBy.md) | 6,435,983 times | 3,794,899 times | 1.69× |
|
||||
| [union](./reference/array/union.md) | 5,059,209 times | 4,771,400 times | 1.06× |
|
||||
| [dropRightWhile](./reference/array/dropRightWhile.md) | 7,529,559 times | 5,606,439 times | 1.34× |
|
||||
| [groupBy](./reference/array/groupBy.md) | 5,000,235 times | 5,206,286 times | 0.96× |
|
||||
|
||||
テスト環境はMacBook Pro 14インチ(M1 Max、2021)です。[ベンチマークコード](https://github.com/toss/es-toolkit/tree/main/benchmarks)を参照してください。
|
72
docs/ja/reference/array/chunk.md
Normal file
72
docs/ja/reference/array/chunk.md
Normal file
@ -0,0 +1,72 @@
|
||||
# chunk
|
||||
|
||||
配列を指定された長さの小さな配列に分割します。
|
||||
|
||||
入力として配列を受け取り、指定された長さに従って複数の小さな配列に分割します。
|
||||
入力配列が均等に分割できない場合、最後の分割された配列に残りの要素が含まれます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function chunk<T>(arr: T[], size: number): T[][];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 小さな配列に分割する配列。
|
||||
- `size` (`number`): 小さな配列の長さ。正の整数である必要があります。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[][]`): 最大長 `size` の小さな配列で構成される2次元配列を返します。
|
||||
|
||||
### エラー
|
||||
|
||||
`size` が正の整数でない場合、エラーをスローします。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { chunk } from 'es-toolkit/array';
|
||||
|
||||
// 数値の配列を最大長2の小さな配列に分割します。
|
||||
chunk([1, 2, 3, 4, 5], 2);
|
||||
// Returns: [[1, 2], [3, 4], [5]]
|
||||
|
||||
// 文字列の配列を最大長3の小さな配列に分割します。
|
||||
chunk(['a', 'b', 'c', 'd', 'e', 'f', 'g'], 3);
|
||||
// Returns: [['a', 'b', 'c'], ['d', 'e', 'f'], ['g']]
|
||||
```
|
||||
|
||||
## 使用例
|
||||
|
||||
::: sandpack
|
||||
|
||||
```ts index.ts
|
||||
import { chunk } from 'es-toolkit/array';
|
||||
|
||||
console.log(chunk([1, 2, 3, 4, 5], 2));
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
## Lodash 互換性
|
||||
|
||||
`es-toolkit/compat` から `chunk` をインポートすると、Lodash と互換になります。
|
||||
|
||||
- `size` が 1 未満の場合、空の配列を返します。
|
||||
- `size` に小数点のある数を提供しても、整数に切り捨てられます。
|
||||
|
||||
```typescript
|
||||
import { chunk } from 'es-toolkit/compat';
|
||||
|
||||
chunk([1, 2, 3], 0); // Returns []
|
||||
```
|
||||
|
||||
## 性能比較
|
||||
|
||||
| | [Bundle Size](../../bundle-size.md) | [Performance](../../performance.md) |
|
||||
| ----------------- | ----------------------------------- | ----------------------------------- |
|
||||
| es-toolkit | 238 bytes (92.4% smaller) | 9,338,821 times (11% slower) |
|
||||
| es-toolkit/compat | 307 bytes (90.2% smaller) | 9,892,157 times (5% slower) |
|
||||
| lodash-es | 3,153 bytes | 10,523,270 times |
|
24
docs/ja/reference/array/compact.md
Normal file
24
docs/ja/reference/array/compact.md
Normal file
@ -0,0 +1,24 @@
|
||||
# compact
|
||||
|
||||
偽と評価される値である `false`、`null`、`0`、`''`、`undefined`、`NaN` を除去した新しい配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function compact<T>(arr: T[]): Array<Exclude<T, false | null | 0 | '' | undefined>>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 偽と評価される値を除去する配列。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`Array<Exclude<T, false | null | 0 | '' | undefined>>`): 偽と評価される値をすべて除去した新しい配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
compact([0, 1, false, 2, '', 3, null, undefined, 4, NaN, 5]);
|
||||
// 戻り値: [1, 2, 3, 4, 5]
|
||||
```
|
30
docs/ja/reference/array/countBy.md
Normal file
30
docs/ja/reference/array/countBy.md
Normal file
@ -0,0 +1,30 @@
|
||||
# countBy
|
||||
|
||||
配列に含まれる要素を `mapper` 関数が返す値に基づいて分類し、数を数えます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function countBy<T>(arr: T[], mapper: (item: T) => string): Record<string, number>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 要素の数を数えたい配列。
|
||||
- `mapper` (`(item: T) => string`): 要素を分類する基準となる値を返す関数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`Record<string, number>`) 各要素が分類ごとにいくつあるかを計算したオブジェクト。
|
||||
|
||||
## 例
|
||||
|
||||
```javascript
|
||||
import { countBy } from 'es-toolkit/array';
|
||||
|
||||
const array = [1, 2, 3, 4, 5, 6];
|
||||
const result = countBy(array, x => (x % 2 === 0 ? 'even' : 'odd'));
|
||||
|
||||
console.log(result);
|
||||
// 出力: { 'odd': 3, 'even': 3 }
|
||||
```
|
40
docs/ja/reference/array/difference.md
Normal file
40
docs/ja/reference/array/difference.md
Normal file
@ -0,0 +1,40 @@
|
||||
# difference
|
||||
|
||||
2つの配列の差分を計算します。
|
||||
|
||||
この関数は2つの配列をパラメータとして受け取り、最初の配列にあるが2番目の配列にない要素を含む新しい配列を返します。
|
||||
つまり、最初の配列から2番目の配列にある要素を除いた残りの要素で構成される配列を作成します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function difference<T>(firstArr: T[], secondArr: T[]): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `firstArr` (`T[]`): 差分を計算する配列です。この配列が主な配列で、この配列の要素が比較されフィルタリングされます。
|
||||
- `secondArr` (`T[]`): 最初の配列から除外する要素を含む配列です。この配列の各要素は最初の配列と比較され、一致する要素があれば結果から除外されます。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 最初の配列にはあるが2番目の配列にはない要素が含まれる新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { difference } from 'es-toolkit/array';
|
||||
|
||||
// 使用例:
|
||||
const array1 = [1, 2, 3, 4, 5];
|
||||
const array2 = [2, 4];
|
||||
const result = difference(array1, array2);
|
||||
// 2と4は両方の配列に存在するため結果から除外され、result変数には[1, 3, 5]が割り当てられます。
|
||||
```
|
||||
|
||||
## パフォーマンス比較
|
||||
|
||||
| | [Bundle Size](../../bundle-size.md) | [Performance](../../performance.md) |
|
||||
| ---------- | ----------------------------------- | ----------------------------------- |
|
||||
| es-toolkit | 90 bytes (92.4% smaller) | 9,317,227 times (85% faster) |
|
||||
| lodash-es | 7,958 bytes | 5,030,861 times |
|
33
docs/ja/reference/array/differenceBy.md
Normal file
33
docs/ja/reference/array/differenceBy.md
Normal file
@ -0,0 +1,33 @@
|
||||
# differenceBy
|
||||
|
||||
提供された関数で要素をマッピングした後、2つの配列の差分を計算します。
|
||||
|
||||
この関数は2つの配列とマッパー関数を受け取り、マッパー関数で計算された結果を基準に、最初の配列にあるが2番目の配列にはない要素を含む新しい配列を返します。つまり、マッピングされた値が2番目の配列のマッピングされた値と一致する最初の配列の要素を除いた残りの要素で構成される配列を作成します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function differenceBy<T, U>(firstArr: T[], secondArr: T[], mapper: (value: T) => U): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `firstArr` (`T[]`): 差分を計算する配列です。この配列が主な配列で、この配列の要素が比較されフィルタリングされます。
|
||||
- `secondArr` (`T[]`): 最初の配列から除外する要素を含む配列です。
|
||||
- `mapper` (`(value: T) => U`): 2つの配列の要素をマッピングする関数です。この関数は2つの配列の各要素に適用され、マッピングされた値を基準に比較を行います。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 最初の配列にはあるが、マッピングされた値が2番目の配列のマッピングされた値と一致しない要素が含まれる新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { differenceBy } from 'es-toolkit/array';
|
||||
|
||||
const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }];
|
||||
const array2 = [{ id: 2 }, { id: 4 }];
|
||||
const mapper = item => item.id;
|
||||
const result = differenceBy(array1, array2, mapper);
|
||||
// resultは[{ id: 1 }, { id: 3 }, { id: 5 }]になります。idが2の要素は両方の配列に存在するため、結果から除外されます。
|
||||
```
|
33
docs/ja/reference/array/differenceWith.md
Normal file
33
docs/ja/reference/array/differenceWith.md
Normal file
@ -0,0 +1,33 @@
|
||||
# differenceWith
|
||||
|
||||
引数として提供された比較関数に従って、2つの配列の差分を計算します。
|
||||
|
||||
この関数は2つの配列と比較関数を受け取ります。この比較関数を使用して要素が同じかどうかを比較し、最初の配列にあるが2番目の配列にはない要素を含む新しい配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function differenceWith<T>(firstArr: T[], secondArr: T[], areItemsEqual: (x: T, y: T) => boolean): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `firstArr` (`T[]`): 差分を計算する配列です。この配列が主な配列で、この配列の要素が比較されフィルタリングされます。
|
||||
- `secondArr` (`T[]`): 最初の配列から除外する要素を含む配列です。
|
||||
- `areItemsEqual` (`(x: T, y: T) => boolean`): 2つの要素が同じかどうかを決定する関数です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`) 比較関数に基づいて、最初の配列にはあるが2番目の配列には存在しないと判断された要素を含む新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { differenceWith } from 'es-toolkit/array';
|
||||
|
||||
const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }];
|
||||
const array2 = [{ id: 2 }, { id: 4 }];
|
||||
const areItemsEqual = (a, b) => a.id === b.id;
|
||||
const result = differenceWith(array1, array2, areItemsEqual);
|
||||
// resultは[{ id: 1 }, { id: 3 }]になります。idが2の要素は同じと見なされ、結果から除外されます。
|
||||
```
|
28
docs/ja/reference/array/drop.md
Normal file
28
docs/ja/reference/array/drop.md
Normal file
@ -0,0 +1,28 @@
|
||||
# drop
|
||||
|
||||
配列の先頭から指定した数の要素を削除した新しい配列を返します。
|
||||
|
||||
この関数は、配列と数値をパラメータとして受け取ります。配列の先頭から指定した数の要素を除いた新しい配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function drop<T>(arr: T[], itemsCount: number): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 要素を削除する配列。
|
||||
- `itemsCount` (`number`): 配列の先頭から削除する要素の数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 配列の先頭から指定した数の要素を除いた新しい配列を返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [1, 2, 3, 4, 5];
|
||||
const result = drop(array, 2);
|
||||
// 最初の2つの要素が削除されるので、結果は [3, 4, 5] になります。
|
||||
```
|
28
docs/ja/reference/array/dropRight.md
Normal file
28
docs/ja/reference/array/dropRight.md
Normal file
@ -0,0 +1,28 @@
|
||||
# dropRight
|
||||
|
||||
配列の末尾から指定された数の要素を削除した新しい配列を返します。
|
||||
|
||||
この関数は、配列と数値をパラメータとして受け取ります。配列の末尾から指定された数の要素を除いた新しい配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function dropRight<T>(arr: T[], itemsCount: number): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 要素を削除する対象の配列。
|
||||
- `itemsCount` (`number`): 配列の末尾から削除する要素の数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 配列の末尾から指定された数の要素を除いた新しい配列を返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [1, 2, 3, 4, 5];
|
||||
const result = dropRight(array, 2);
|
||||
// 末尾の2つの要素が削除されるので、結果は [1, 2, 3] になります。
|
||||
```
|
29
docs/ja/reference/array/dropRightWhile.md
Normal file
29
docs/ja/reference/array/dropRightWhile.md
Normal file
@ -0,0 +1,29 @@
|
||||
# dropRightWhile
|
||||
|
||||
配列の末尾から始めて、条件関数が`false`を返すまで要素を削除します。
|
||||
|
||||
この関数は配列の各要素を走査し、配列の末尾から条件関数が`false`を返すまで要素を削除します。
|
||||
残りの要素で構成される新しい配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function dropRightWhile<T>(arr: T[], canContinueDropping: (item: T) => boolean): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 要素を削除する配列。
|
||||
- `canContinueDropping` (`(item: T) => boolean`): 要素の削除を続けるかどうかを返す条件関数です。各要素に対して呼び出され、`true`を返す間は要素を削除します。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 条件関数が`false`を返すまでの残りの要素で構成される新しい配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [1, 2, 3, 2, 4, 5];
|
||||
const result = dropRightWhile(array, x => x > 3);
|
||||
// 3以下の要素に遭遇するまで要素を削除するので、結果は[1, 2, 3, 2]になります。
|
||||
```
|
29
docs/ja/reference/array/dropWhile.md
Normal file
29
docs/ja/reference/array/dropWhile.md
Normal file
@ -0,0 +1,29 @@
|
||||
# dropWhile
|
||||
|
||||
配列の先頭から始めて、条件関数が`false`を返すまで要素を削除します。
|
||||
|
||||
この関数は配列の各要素を順に処理し、配列の先頭から条件関数が`false`を返すまで要素を削除します。
|
||||
残りの要素で構成される新しい配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function dropWhile<T>(arr: T[], canContinueDropping: (item: T) => boolean): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 要素を削除する配列。
|
||||
- `canContinueDropping` (`(item: T) => boolean`): 要素の削除を続けるかどうかを返す条件関数です。各要素に対して呼び出され、`true`を返す間は要素を削除します。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 条件関数が`false`を返すまでの残りの要素で構成される新しい配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [1, 2, 3, 2, 4, 5];
|
||||
const result = dropWhile(array, x => x < 3);
|
||||
// 3未満の要素が見つかるまで要素を削除するので、結果は[3, 2, 4, 5]になります。
|
||||
```
|
47
docs/ja/reference/array/fill.md
Normal file
47
docs/ja/reference/array/fill.md
Normal file
@ -0,0 +1,47 @@
|
||||
# fill
|
||||
|
||||
配列の要素を指定された値で埋めます。開始位置から終了位置までの要素を提供された値で置き換えます。
|
||||
|
||||
この関数は元の配列を変更し、提供された値で開始インデックスから終了インデックスまでの要素を置き換えます。
|
||||
開始または終了インデックスを提供しない場合、配列全体を埋めます。
|
||||
|
||||
負のインデックスを使用することもできます。この場合、配列の末尾からインデックスを計算します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function fill<T>(array: unknown[], value: T): T[];
|
||||
function fill<T, U>(array: T[], value: T, start: number): Array<T | U>;
|
||||
function fill<T, U>(array: T[], value: T, start: number, end: number): Array<T | U>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `array` (`Array<T | U>`): 埋める配列です。
|
||||
- `value` (`U`): 配列を埋める値です。
|
||||
- `start` (`number`, デフォルト = 0): 開始位置です。デフォルトは0です。
|
||||
- `end` (`number`, デフォルト = array.length): 終了位置です。デフォルトは配列の長さです。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`Array<T | U>`): 埋められた値がある配列を返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array1 = [1, 2, 3];
|
||||
const result1 = fill(array1, 'a');
|
||||
// result1は ['a', 'a', 'a'] になります。
|
||||
|
||||
const array2 = Array(3);
|
||||
const result2 = fill(array2, 2);
|
||||
// result2は [2, 2, 2] になります。
|
||||
|
||||
const array3 = [4, 6, 8, 10];
|
||||
const result3 = fill(array3, '*', 1, 3);
|
||||
// result3は [4, '*', '*', 10] になります。
|
||||
|
||||
const array4 = [1, 2, 3];
|
||||
const result4 = fill(array4, '*', -2, -1);
|
||||
// result4は [1, '*', 3] になります。
|
||||
```
|
36
docs/ja/reference/array/flatMap.md
Normal file
36
docs/ja/reference/array/flatMap.md
Normal file
@ -0,0 +1,36 @@
|
||||
# flatMap
|
||||
|
||||
ネストされた配列の各要素を与えられたイテレータ関数でマッピングし、指定された深さまで平坦化します。
|
||||
|
||||
JavaScriptに組み込まれている[Array#flat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat)を[Array#map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map)と組み合わせて`map(iteratee).flat(depth)`として呼び出した場合と同じように動作しますが、より高速です。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function flatMap<T, U, D extends number = 1>(arr: T[], iteratee: (item: T) => U, depth?: D): Array<FlatArray<U[], D>>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 平坦化するネストされた配列です。
|
||||
- `iteratee` (`T[]`): 各配列要素をマッピングする関数です。
|
||||
- `depth` (`D`): 平坦化する深さです。デフォルト値は1です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`Array<FlatArray<U[], D>>`): 各要素がマッピングされ、指定された深さまで平坦化された新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [1, 2, 3];
|
||||
|
||||
const result1 = flatMap(array, item => [item, item], 1);
|
||||
// [1, 1, 2, 2, 3, 3]を返します。
|
||||
|
||||
const result2 = flatMap(array, item => [[item, item]], 2);
|
||||
// [1, 1, 2, 2, 3, 3]を返します。
|
||||
|
||||
const result3 = flatMap(array, item => [[[item, item]]], 3);
|
||||
// [1, 1, 2, 2, 3, 3]を返します。
|
||||
```
|
35
docs/ja/reference/array/flatten.md
Normal file
35
docs/ja/reference/array/flatten.md
Normal file
@ -0,0 +1,35 @@
|
||||
# flatten
|
||||
|
||||
ネストされた配列を指定した深さまで平坦化します。
|
||||
|
||||
JavaScriptに組み込まれている[Array#flat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat)と同じように動作しますが、より高速です。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function flatten<T, D extends number = 1>(arr: T[], depth?: D): Array<FlatArray<T[], D>>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 平坦化する入れ子の配列です。
|
||||
- `depth` (`D`): 平坦化する深さです。デフォルト値は1です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`Array<FlatArray<T[], D>>`): 指定された深さまで平坦化された新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [1, [2, 3], [4, [5, 6]]];
|
||||
|
||||
const result1 = flatten(array);
|
||||
// [1, 2, 3, 4, [5, 6]]を返します。
|
||||
|
||||
const result2 = flatten(array, 1);
|
||||
// [1, 2, 3, 4, [5, 6]]を返します。
|
||||
|
||||
const result3 = flatten(array, 2);
|
||||
// [1, 2, 3, 4, 5, 6]を返します。
|
||||
```
|
31
docs/ja/reference/array/flattenDeep.md
Normal file
31
docs/ja/reference/array/flattenDeep.md
Normal file
@ -0,0 +1,31 @@
|
||||
# flattenDeep
|
||||
|
||||
ネストされた配列のすべての深さを展開して平坦化します。
|
||||
|
||||
JavaScript言語に含まれる[Array#flat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat)を`flat(Infinity)`で呼び出した時と同じように動作しますが、より高速です。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
// ネストされた配列を再帰的に展開して、最も内部の要素の型を抽出するユーティリティ型です。
|
||||
type ExtractNestedArrayType<T> = T extends ReadonlyArray<infer U> ? ExtractNestedArrayType<U> : T;
|
||||
|
||||
function flattenDeep<T>(arr: T[]): Array<ExtractNestedArrayType<T>>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 平坦化するネストされた配列です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`Array<ExtractNestedArrayType<T>>`): すべての深さが平坦化された新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [1, [2, [3]], [4, [5, 6]]];
|
||||
|
||||
const result = flattenDeep(array);
|
||||
// [1, 2, 3, 4, 5, 6]を返します。
|
||||
```
|
37
docs/ja/reference/array/forEachRight.md
Normal file
37
docs/ja/reference/array/forEachRight.md
Normal file
@ -0,0 +1,37 @@
|
||||
# forEachRight
|
||||
|
||||
配列 (`arr`) の要素を右から左に順に走査し、各要素に対して `callback` 関数を呼び出します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```ts
|
||||
function forEachRight<T>(arr: T[], callback: (value: T, index: number, arr: T[]) => void): void;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr`: (`T[]`): 走査する配列。
|
||||
- `callback`: (`(value: T, index: number, arr: T[])`): 各反復で呼び出される関数です。
|
||||
- `value`: 配列内で現在処理中の要素。
|
||||
- `index`: 配列内で現在処理中の要素のインデックス。
|
||||
- `arr`: `forEachRight` 関数が呼び出された配列。
|
||||
|
||||
### 戻り値
|
||||
|
||||
`void`
|
||||
|
||||
## 例
|
||||
|
||||
```ts
|
||||
import { forEachRight } from 'es-toolkit/forEachRight';
|
||||
|
||||
const array = [1, 2, 3];
|
||||
const result: number[] = [];
|
||||
|
||||
// forEachRight 関数を使用して配列を走査し、各要素を結果配列に追加します。
|
||||
forEachRight(array, value => {
|
||||
result.push(value);
|
||||
});
|
||||
|
||||
console.log(result); // 出力: [3, 2, 1];
|
||||
```
|
42
docs/ja/reference/array/groupBy.md
Normal file
42
docs/ja/reference/array/groupBy.md
Normal file
@ -0,0 +1,42 @@
|
||||
# groupBy
|
||||
|
||||
与えられたキー生成関数に従って配列の要素を分類します。
|
||||
|
||||
この関数は、配列と各要素からキーを生成する関数をパラメータとして受け取ります。
|
||||
キーは関数で生成されたキーであり、値はそのキーを共有する要素をグループ化した配列であるオブジェクトを返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function groupBy<T, K extends PropertyKey>(arr: T[], getKeyFromItem: (item: T) => K): Record<K, T[]>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 要素を分類する配列。
|
||||
- `getKeyFromItem` (`(item: T) => K`): 要素からキーを生成する関数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`Record<K, T[]>`): キーに従って要素が分類されたオブジェクトを返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [
|
||||
{ category: 'fruit', name: 'apple' },
|
||||
{ category: 'fruit', name: 'banana' },
|
||||
{ category: 'vegetable', name: 'carrot' },
|
||||
];
|
||||
const result = groupBy(array, item => item.category);
|
||||
// 結果:
|
||||
// {
|
||||
// fruit: [
|
||||
// { category: 'fruit', name: 'apple' },
|
||||
// { category: 'fruit', name: 'banana' }
|
||||
// ],
|
||||
// vegetable: [
|
||||
// { category: 'vegetable', name: 'carrot' }
|
||||
// ]
|
||||
// }
|
||||
```
|
44
docs/ja/reference/array/head.md
Normal file
44
docs/ja/reference/array/head.md
Normal file
@ -0,0 +1,44 @@
|
||||
# head
|
||||
|
||||
配列の最初の要素を返します。
|
||||
|
||||
この関数は、配列を入力として受け取り、配列の最初の要素を返します。配列が空の場合、関数は`undefined`を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
export function head<T>(arr: [T, ...T[]]): T;
|
||||
export function head<T>(arr: T[]): T | undefined;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 最初の要素を取得する配列です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T | undefined`): 配列の最初の要素、配列が空の場合`undefined`を返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const arr1 = [1, 2, 3];
|
||||
const firstElement1 = head(arr1);
|
||||
// firstElement1は1です。
|
||||
|
||||
const arr2: string[] = [];
|
||||
const firstElement2 = head(arr2);
|
||||
// firstElement2はundefinedです。
|
||||
|
||||
const arr3 = ['a', 'b', 'c'];
|
||||
const firstElement3 = head(arr3);
|
||||
// firstElement3は'a'です。
|
||||
|
||||
const arr4 = [true, false, true];
|
||||
const firstElement4 = head(arr4);
|
||||
// firstElement4はtrueです。
|
||||
|
||||
const arr5: [number, string, boolean] = [1, 'a', true];
|
||||
const firstElement5 = head(arr5);
|
||||
// firstElement5は1です。
|
||||
```
|
49
docs/ja/reference/array/initial.md
Normal file
49
docs/ja/reference/array/initial.md
Normal file
@ -0,0 +1,49 @@
|
||||
# initial
|
||||
|
||||
配列の最後の要素を除いた残りの要素で構成される新しい配列を返します。
|
||||
|
||||
空の配列や長さが1の配列の場合、空の配列(`[]`)を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function initial<T>(arr: T[]): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr`(`T[]`):最後の要素を除く配列。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`):配列の最後の要素を除いた残りの配列。空の配列や長さが1の配列の場合、空の配列(`[]`)を返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const arr1 = [1, 2, 3];
|
||||
const result = initial(arr1);
|
||||
// resultは[1, 2]です。
|
||||
|
||||
const arr2: number[] = [];
|
||||
const result = initial(arr2);
|
||||
// resultは[]です。
|
||||
|
||||
const arr3: number[] = [1];
|
||||
const result = initial(arr3);
|
||||
// resultは[]です。
|
||||
|
||||
const largeArray = Array(1000)
|
||||
.fill(0)
|
||||
.map((_, i) => i);
|
||||
const result = initial(largeArray);
|
||||
// resultは[0, 1, 2 ..., 998]です。
|
||||
|
||||
const nestedArray = [
|
||||
[3, 1],
|
||||
[3, 2],
|
||||
[3, 3],
|
||||
];
|
||||
const result = initial(nestedArray);
|
||||
// resultは[[3, 1], [3, 2]]です。
|
||||
```
|
30
docs/ja/reference/array/intersection.md
Normal file
30
docs/ja/reference/array/intersection.md
Normal file
@ -0,0 +1,30 @@
|
||||
# intersection
|
||||
|
||||
両方の配列に含まれる要素を返します。
|
||||
|
||||
この関数は2つの配列を受け取り、両方の配列に含まれる要素で構成された新しい配列を返します。
|
||||
実際には、最初の配列の要素のうち、2番目の配列に含まれていない要素を削除します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function intersection<T>(firstArr: T[], secondArr: T[]): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `firstArr` (`T[]`): 比較する1つ目の配列。
|
||||
- `secondArr` (`T[]`): 比較する2つ目の配列。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`) 両方の配列に含まれる要素で構成された新しい配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array1 = [1, 2, 3, 4, 5];
|
||||
const array2 = [3, 4, 5, 6, 7];
|
||||
const result = intersection(array1, array2);
|
||||
// 両方の配列に含まれる [3, 4, 5] を返します。
|
||||
```
|
33
docs/ja/reference/array/intersectionBy.md
Normal file
33
docs/ja/reference/array/intersectionBy.md
Normal file
@ -0,0 +1,33 @@
|
||||
# intersectionBy
|
||||
|
||||
`mapper` 関数が返す値を基準に、2つの配列の共通部分を返します。
|
||||
|
||||
この関数は、パラメータとして2つの配列と `mapper` 関数を受け取ります。
|
||||
`mapper` 関数で各配列の要素を変換したとき、両方の配列に含まれる要素からなる新しい配列を返します。
|
||||
実際の実装を見ると、最初の配列と2番目の配列を `mapper` が返す値を基準に比較し、最初の配列の要素のうち2番目の配列にない要素を除去します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function intersectionBy<T, U>(firstArr: T[], secondArr: T[], mapper: (item: T) => U): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `firstArr` (`T[]`): 比較する最初の配列。
|
||||
- `secondArr` (`T[]`): 比較する2番目の配列。
|
||||
- `mapper` (`(item: T) => U`): 比較するために要素を新しい値に変換する関数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 最初の配列と2番目の配列を `mapper` が返す値を基準に比較し、両方の配列に含まれる要素のみを含む新しい配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }];
|
||||
const array2 = [{ id: 2 }, { id: 4 }];
|
||||
const mapper = item => item.id;
|
||||
const result = intersectionBy(array1, array2, mapper);
|
||||
// `mapper`で変換したとき、両方の配列に含まれる要素からなる [{ id: 2 }] 値が返されます。
|
||||
```
|
33
docs/ja/reference/array/intersectionWith.md
Normal file
33
docs/ja/reference/array/intersectionWith.md
Normal file
@ -0,0 +1,33 @@
|
||||
# intersectionWith
|
||||
|
||||
2つの要素が一致するかどうかを判断するカスタム関数を基準に、2つの配列の交差部分を返します。
|
||||
|
||||
この関数は、パラメータとして2つの配列とカスタム一致関数を受け取ります。
|
||||
この関数は、カスタム一致関数の戻り値を基準に、両方の配列に含まれる要素を新しい配列として返します。
|
||||
実際の実装を見ると、最初の配列の要素のうち、2番目の配列のどの要素とも一致関数の基準で等しくない要素を除外した新しい配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function intersectionWith<T>(firstArr: T[], secondArr: T[], areItemsEqual: (x: T, y: T) => boolean): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `firstArr` (`T[]`): 比較する最初の配列。
|
||||
- `secondArr` (`T[]`): 比較する2番目の配列。
|
||||
- `areItemsEqual` (`(x: T, y: T) => boolean`): 2つの要素が一致するかどうかを判断する一致関数です。2つの要素が一致する場合は `true` を、一致しない場合は `false` を返すようにしてください。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): カスタム一致関数の戻り値を基準に、両方の配列に含まれる要素を含む新しい配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }];
|
||||
const array2 = [{ id: 2 }, { id: 4 }];
|
||||
const areItemsEqual = (a, b) => a.id === b.id;
|
||||
const result = intersectionWith(array1, array2, areItemsEqual);
|
||||
// `areItemsEqual` 基準でarray1とarray2の両方に含まれている要素からなる [{ id: 2 }] が返されます。
|
||||
```
|
33
docs/ja/reference/array/isSubset.md
Normal file
33
docs/ja/reference/array/isSubset.md
Normal file
@ -0,0 +1,33 @@
|
||||
# isSubset
|
||||
|
||||
`subset` 配列が `superset` 配列のサブセットであるかどうかを確認します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function isSubset<T>(superset: T[], subset: T[]): boolean;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `superset` (`T[]`): サブセットのすべての要素を含む可能性のある配列です。
|
||||
- `subset` (`T[]`): スーパーセット配列に含まれているかどうかを比較する配列です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`boolean`): `subset` 配列が `superset` 配列にすべて含まれている場合は `true` を返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const superset1 = [1, 2, 3, 4, 5];
|
||||
const subset1 = [2, 3, 4];
|
||||
|
||||
isSubset(superset1, subset1);
|
||||
// true を返します。
|
||||
|
||||
const superset2 = ['a', 'b', 'c'];
|
||||
const subset2 = ['a', 'd'];
|
||||
isSubset(superset2, subset2);
|
||||
// false を返します。
|
||||
```
|
38
docs/ja/reference/array/keyBy.md
Normal file
38
docs/ja/reference/array/keyBy.md
Normal file
@ -0,0 +1,38 @@
|
||||
# keyBy
|
||||
|
||||
配列の要素を簡単に見つけられるように、キーと値のペアからなるオブジェクトに変換します。
|
||||
|
||||
この関数は、パラメータとして配列と各要素からキーを生成する関数を受け取ります。
|
||||
キーは関数で生成されたキーであり、値はそのキーを生成した要素であるオブジェクトを返します。
|
||||
同じキーを生成する要素が複数ある場合、その中で最後の要素が値として使用されます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function keyBy<T, K extends PropertyKey>(arr: T[], getKeyFromItem: (item: T) => K): Record<K, T>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): マッピングする配列。
|
||||
- `getKeyFromItem` (`(item: T) => K`): 要素からキーを生成する関数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`Record<K, T>`) キーと対応する配列要素がマッピングされたオブジェクトを返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [
|
||||
{ category: 'fruit', name: 'apple' },
|
||||
{ category: 'fruit', name: 'banana' },
|
||||
{ category: 'vegetable', name: 'carrot' },
|
||||
];
|
||||
const result = keyBy(array, item => item.category);
|
||||
// 結果:
|
||||
// {
|
||||
// fruit: { category: 'fruit', name: 'banana' },
|
||||
// vegetable: { category: 'vegetable', name: 'carrot' }
|
||||
// }
|
||||
```
|
46
docs/ja/reference/array/last.md
Normal file
46
docs/ja/reference/array/last.md
Normal file
@ -0,0 +1,46 @@
|
||||
# last
|
||||
|
||||
配列の最後の要素を返します。
|
||||
|
||||
空の配列の場合、`undefined`を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function last<T>(arr: [...T[], T]): T;
|
||||
function last<T>(arr: T[]): T | undefined;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr`(`T[]`): 最後の要素を返す配列。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T | undefined`): 配列の最後の要素、空の配列の場合は`undefined`を返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const arr1 = [1, 2, 3];
|
||||
const result = last(arr1);
|
||||
// resultは3です。
|
||||
|
||||
const arr2: number[] = [];
|
||||
const result = last(arr2);
|
||||
// resultはundefinedです。
|
||||
|
||||
const largeArray = Array(1000)
|
||||
.fill(0)
|
||||
.map((_, i) => i);
|
||||
const result = last(largeArray);
|
||||
// resultは999です。
|
||||
|
||||
const nestedArray = [
|
||||
[3, 1],
|
||||
[3, 2],
|
||||
[3, 3],
|
||||
];
|
||||
const result = last(nestedArray);
|
||||
// resultは[3,3]です。
|
||||
```
|
27
docs/ja/reference/array/maxBy.md
Normal file
27
docs/ja/reference/array/maxBy.md
Normal file
@ -0,0 +1,27 @@
|
||||
# maxBy
|
||||
|
||||
関数が返す値を基準に、配列の中で最大値を持つ要素を返します。
|
||||
|
||||
配列が空の場合は、`undefined`を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function maxBy<T>(items: T[], getValue: (element: T) => number): T;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `items` (`T[]`): 最大値を持つ要素を探す配列。
|
||||
- `getValue` (`(element: T) => number`): 要素に対応する数値を計算する関数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T`): `getValue`関数を基準に、配列の中で最大値を持つ要素。配列が空の場合は`undefined`を返します。
|
||||
|
||||
### 例
|
||||
|
||||
```typescript
|
||||
maxBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // 戻り値: { a: 3 }
|
||||
maxBy([], x => x.a); // 戻り値: undefined
|
||||
```
|
25
docs/ja/reference/array/minBy.md
Normal file
25
docs/ja/reference/array/minBy.md
Normal file
@ -0,0 +1,25 @@
|
||||
# minBy
|
||||
|
||||
関数が返す値を基準に、配列から最小値を持つ要素を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function minBy<T>(items: T[], getValue: (element: T) => number): T;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `items` (`T[]`): 最小値を持つ要素を探す配列。
|
||||
- `getValue` (`(element: T) => number`): 要素に対応する数値を計算する関数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T`): `getValue` 関数を基準に、配列から最小値を持つ要素。
|
||||
|
||||
### 例
|
||||
|
||||
```typescript
|
||||
minBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // 戻り値: { a: 1 }
|
||||
minBy([], x => x.a); // 戻り値: undefined
|
||||
```
|
53
docs/ja/reference/array/orderBy.md
Normal file
53
docs/ja/reference/array/orderBy.md
Normal file
@ -0,0 +1,53 @@
|
||||
# orderBy
|
||||
|
||||
複数のプロパティとそれぞれの順序方向に基づいてオブジェクトの配列をソートします。
|
||||
|
||||
与えられた条件 `criteria` と指定された順序方向に従って、オブジェクトの配列をソートします。
|
||||
|
||||
- 条件がプロパティ名の場合、対応するプロパティの値に基づいてソートします。
|
||||
- 条件が関数の場合、関数が返す値に基づいてソートします。
|
||||
|
||||
配列は指定された順序に従って昇順(`asc`)または降順(`desc`)でソートされます。
|
||||
条件に基づいて2つの要素の値が等しい場合、次の条件でソートします。
|
||||
順序の数が条件の数より少ない場合、残りは最後の順序でソートされます。
|
||||
|
||||
## シグネチャ
|
||||
|
||||
```typescript
|
||||
function orderBy<T extends object>(
|
||||
arr: T[],
|
||||
criteria: Array<((item: T) => unknown) | keyof T>,
|
||||
orders: Array<'asc' | 'desc'>
|
||||
): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): ソートするオブジェクトの配列。
|
||||
- `criteria` (`Array<((item: T) => unknown) | keyof T>`): ソートの基準。オブジェクトのプロパティ名または関数を使用できます。
|
||||
- `orders` (`Array<'asc' | 'desc'>`): 各キーに対するソート方向の配列('asc'は昇順、'desc'は降順)。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`) ソートされた配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
// 'user'を昇順、'age'を降順でオブジェクトの配列をソートする。
|
||||
const users = [
|
||||
{ user: 'fred', age: 48 },
|
||||
{ user: 'barney', age: 34 },
|
||||
{ user: 'fred', age: 40 },
|
||||
{ user: 'barney', age: 36 },
|
||||
];
|
||||
|
||||
const result = orderBy(users, [obj => obj.user, 'age'], ['asc', 'desc']);
|
||||
// result will be:
|
||||
// [
|
||||
// { user: 'barney', age: 36 },
|
||||
// { user: 'barney', age: 34 },
|
||||
// { user: 'fred', age: 48 },
|
||||
// { user: 'fred', age: 40 },
|
||||
// ]
|
||||
```
|
31
docs/ja/reference/array/partition.md
Normal file
31
docs/ja/reference/array/partition.md
Normal file
@ -0,0 +1,31 @@
|
||||
# partition
|
||||
|
||||
配列を2つに分割するのに使用できる関数です。
|
||||
|
||||
この関数は、パラメータとして配列と`true`/`false`を返す関数を受け取ります。
|
||||
この関数は2つの配列からなるタプルを返します。最初の配列は関数が`true`を返す要素で構成されます。
|
||||
2番目の配列は関数が`false`を返す要素で構成されます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function partition<T>(arr: T[], isInTruthy: (value: T) => boolean): [truthy: T[], falsy: T[]];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 2つに分割する配列。
|
||||
- `isInTruthy` (`(value: T) => boolean`): 配列の要素が最初の配列に含まれるか、2番目の配列に含まれるかを決定する関数。`true`を返すと最初の配列に、`false`を返すと2番目の配列に含まれます。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`[T[], T[]]`): 2つの配列で構成されるタプル。最初の配列は`isInTruthy`が`true`を返した要素で、2番目の配列は`false`を返した要素で構成されます。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [1, 2, 3, 4, 5];
|
||||
const is偶数 = x => x % 2 === 0;
|
||||
const [偶数, 奇数] = partition(array, is偶数);
|
||||
// 偶数は[2, 4]、奇数は[1, 3, 5]になります。
|
||||
```
|
25
docs/ja/reference/array/sample.md
Normal file
25
docs/ja/reference/array/sample.md
Normal file
@ -0,0 +1,25 @@
|
||||
# sample
|
||||
|
||||
配列を受け取り、その配列からランダムに選択された単一の要素を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function sample<T>(arr: T[]): T;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): サンプリングする配列です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T`): 配列からランダムに選択された要素です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [1, 2, 3, 4, 5];
|
||||
const randomElement = sample(array);
|
||||
// randomElementは配列からランダムに選択された要素の1つになります。
|
||||
```
|
32
docs/ja/reference/array/sampleSize.md
Normal file
32
docs/ja/reference/array/sampleSize.md
Normal file
@ -0,0 +1,32 @@
|
||||
# sampleSize
|
||||
|
||||
指定された `size` のサンプル要素の配列を返します。
|
||||
|
||||
この関数は配列と数値を受け取ります。[Floydのアルゴリズム](https://www.nowherenearithaca.com/2013/05/robert-floyds-tiny-and-beautiful.html)を使用して、サンプリングされた要素を含む配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
export function sampleSize<T>(array: T[], size: number): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `array` (`T[]`): サンプリングする配列です。
|
||||
- `size` (`number`): サンプリングするサイズです。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): サンプルサイズが適用された新しい配列です。
|
||||
|
||||
### エラー
|
||||
|
||||
`size` が `array` の長さより大きい場合、エラーをスローします。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const result = sampleSize([1, 2, 3], 2);
|
||||
// 結果は配列の要素から2つを含む配列になります。
|
||||
// [1, 2] または [1, 3] または [2, 3]
|
||||
```
|
25
docs/ja/reference/array/shuffle.md
Normal file
25
docs/ja/reference/array/shuffle.md
Normal file
@ -0,0 +1,25 @@
|
||||
# shuffle
|
||||
|
||||
配列の要素の順序をランダムに並び替えます。Fisher-Yatesアルゴリズムを使用します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function shuffle<T>(arr: T[]): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 要素をシャッフルする配列です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 要素がランダムに並び替えられた新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [1, 2, 3, 4, 5];
|
||||
const shuffledArray = shuffle(array);
|
||||
// shuffledArrayは配列の要素がランダムに並び替えられた新しい配列 [3, 1, 4, 5, 2] になります。
|
||||
```
|
44
docs/ja/reference/array/sortBy.md
Normal file
44
docs/ja/reference/array/sortBy.md
Normal file
@ -0,0 +1,44 @@
|
||||
# sortBy
|
||||
|
||||
与えられた条件 `criteria` に従って、オブジェクトの配列をソートします。
|
||||
|
||||
- 条件がプロパティ名の場合、該当するプロパティの値に基づいてソートします。
|
||||
- 条件が関数の場合、関数が返す値に基づいてソートします。
|
||||
|
||||
配列は昇順でソートされます。条件に基づいて2つの要素の値が同じ場合、次の条件でソートします。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function sortBy<T extends object>(arr: T[], criteria: Array<((item: T) => unknown) | keyof T>): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): ソートするオブジェクトの配列。
|
||||
- `criteria` (`Array<((item: T) => unknown) | keyof T>`): ソートの基準。オブジェクトのプロパティ名または関数を使用できます。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`) 昇順でソートされた配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const users = [
|
||||
{ user: 'foo', age: 24 },
|
||||
{ user: 'bar', age: 7 },
|
||||
{ user: 'foo ', age: 8 },
|
||||
{ user: 'bar ', age: 29 },
|
||||
];
|
||||
|
||||
sortBy(users, ['user', 'age']);
|
||||
sortBy(users, [obj => obj.user, 'age']);
|
||||
// 結果は以下のようになります:
|
||||
// [
|
||||
// { user : 'bar', age: 7 },
|
||||
// { user : 'bar', age: 29 },
|
||||
// { user : 'foo', age: 8 },
|
||||
// { user : 'foo', age: 24 },
|
||||
// ]
|
||||
```
|
38
docs/ja/reference/array/tail.md
Normal file
38
docs/ja/reference/array/tail.md
Normal file
@ -0,0 +1,38 @@
|
||||
# tail
|
||||
|
||||
最初の要素を除いたすべての要素を含む新しい配列を返します。
|
||||
|
||||
この関数は配列を入力として受け取り、最初の要素を除いたすべての要素を含む新しい配列を返します。入力配列が空であるか、要素が1つしかない場合は空の配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function tail<T>(arr: [T]): [];
|
||||
function tail(arr: []): [];
|
||||
function tail<T, U>(arr: [T, ...U[]]): U[];
|
||||
function tail<T>(arr: T[]): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 最初の要素を除く配列です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 入力配列の最初の要素を除いたすべての要素を含む新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const arr1 = [1, 2, 3];
|
||||
const result = tail(arr1);
|
||||
// resultは[2, 3]になります。
|
||||
|
||||
const arr2 = [1];
|
||||
const result2 = tail(arr2);
|
||||
// result2は[]になります。
|
||||
|
||||
const arr3 = [];
|
||||
const result3 = tail(arr3);
|
||||
// result3は[]になります。
|
||||
```
|
33
docs/ja/reference/array/take.md
Normal file
33
docs/ja/reference/array/take.md
Normal file
@ -0,0 +1,33 @@
|
||||
# take
|
||||
|
||||
入力配列 `arr` から最初の `count` 個の要素を含む新しい配列を返します。
|
||||
|
||||
もし `count` が `arr` の長さより大きい場合、配列全体を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function take<T>(arr: T[], count: number): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 要素を取得する配列です。
|
||||
- `count` (`number`): 取得する要素の数です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): `arr` から最初の `count` 個の要素を含む新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
// [1, 2, 3]
|
||||
take([1, 2, 3, 4, 5], 3);
|
||||
|
||||
// ['a', 'b']
|
||||
take(['a', 'b', 'c'], 2);
|
||||
|
||||
// [1, 2, 3]
|
||||
take([1, 2, 3], 5);
|
||||
```
|
33
docs/ja/reference/array/takeRight.md
Normal file
33
docs/ja/reference/array/takeRight.md
Normal file
@ -0,0 +1,33 @@
|
||||
# takeRight
|
||||
|
||||
入力配列 `arr` から最後の `count` 個の要素を含む新しい配列を返します。
|
||||
|
||||
もし `count` が `arr` の長さより大きい場合、全体の配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function takeRight<T>(arr: T[], count: number): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 要素を取得する配列です。
|
||||
- `count` (`number`): 取得する要素の数です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`) `arr` から最後の `count` 個の要素を含む新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
// [4, 5]
|
||||
takeRight([1, 2, 3, 4, 5], 2);
|
||||
|
||||
// ['b', 'c']
|
||||
takeRight(['a', 'b', 'c'], 2);
|
||||
|
||||
// [1, 2, 3]
|
||||
takeRight([1, 2, 3], 5);
|
||||
```
|
29
docs/ja/reference/array/takeRightWhile.md
Normal file
29
docs/ja/reference/array/takeRightWhile.md
Normal file
@ -0,0 +1,29 @@
|
||||
# takeRightWhile
|
||||
|
||||
条件関数が`true`を返す間、配列の末尾から要素を取得します。
|
||||
条件を満たさない要素が現れると停止します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function takeRightWhile<T>(arr: T[], shouldContinueTaking: (item: T) => boolean): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 要素を取得する配列です。
|
||||
- `shouldContinueTaking` (`(item: T) => boolean`): 各要素と共に呼び出される条件関数です。この関数が`true`を返す間、要素が結果に含まれます。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 条件関数が`true`を返す間、配列の末尾から取得した要素を含む新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
// [3, 2, 1]
|
||||
takeRightWhile([5, 4, 3, 2, 1], n => n < 4);
|
||||
|
||||
// []
|
||||
takeRightWhile([1, 2, 3], n => n > 3);
|
||||
```
|
29
docs/ja/reference/array/takeWhile.md
Normal file
29
docs/ja/reference/array/takeWhile.md
Normal file
@ -0,0 +1,29 @@
|
||||
# takeWhile
|
||||
|
||||
与えられた条件関数が`true`を返す先頭の要素を含む新しい配列を返します。
|
||||
条件を満たさない要素が現れると停止します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function takeWhile<T>(arr: T[], shouldContinueTaking: (element: T) => boolean): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 要素を取得する配列です。
|
||||
- `shouldContinueTaking` (`(item: T) => boolean`) 各要素と共に呼び出される条件関数です。この関数が`true`を返す間、要素が結果に含まれます。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`) 条件関数が`true`を返す間、先頭から取得した要素を含む新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
// [1, 2] を返します
|
||||
takeWhile([1, 2, 3, 4], x => x < 3);
|
||||
|
||||
// [] を返します
|
||||
takeWhile([1, 2, 3, 4], x => x > 3);
|
||||
```
|
46
docs/ja/reference/array/toFilled.md
Normal file
46
docs/ja/reference/array/toFilled.md
Normal file
@ -0,0 +1,46 @@
|
||||
# toFilled
|
||||
|
||||
配列の要素を指定された値で埋めます。開始位置から終了位置までの要素を提供された値で置き換えた新しい配列を返します。開始または終了インデックスを提供しない場合、配列全体を埋めます。
|
||||
|
||||
負のインデックスを使用することもできます。この場合、配列の末尾からインデックスを計算します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function toFilled<T, U>(arr: T[], value: U): Array<T | U>;
|
||||
function toFilled<T, U>(arr: T[], value: U, start: number): Array<T | U>;
|
||||
function toFilled<T, U>(arr: T[], value: U, start: number, end: number): Array<T | U>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 埋める配列です。
|
||||
- `value` (`U`): 配列を埋める値です。
|
||||
- `start` (`number, デフォルト = 0`): 開始位置です。デフォルトは0です。
|
||||
- `end` (`number, デフォルト = array.length`): 終了位置です。デフォルトは配列の長さです。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`Array<T | U>`): 指定された値で埋められた新しい配列です。
|
||||
|
||||
### 例
|
||||
|
||||
```typescript
|
||||
const array = [1, 2, 3, 4, 5];
|
||||
|
||||
let result = toFilled(array, '*', 2);
|
||||
console.log(result); // [1, 2, '*', '*', '*']
|
||||
console.log(array); // [1, 2, 3, 4, 5]
|
||||
|
||||
result = toFilled(array, '*', 1, 4);
|
||||
console.log(result); // [1, '*', '*', '*', 5]
|
||||
console.log(array); // [1, 2, 3, 4, 5]
|
||||
|
||||
result = toFilled(array, '*');
|
||||
console.log(result); // ['*', '*', '*', '*', '*']
|
||||
console.log(array); // [1, 2, 3, 4, 5]
|
||||
|
||||
result = toFilled(array, '*', -4, -1);
|
||||
console.log(result); // [1, '*', '*', '*', 5]
|
||||
console.log(array); // [1, 2, 3, 4, 5]
|
||||
```
|
27
docs/ja/reference/array/union.md
Normal file
27
docs/ja/reference/array/union.md
Normal file
@ -0,0 +1,27 @@
|
||||
# union
|
||||
|
||||
2つの配列を結合し、重複した値を除いた和集合を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function union<T>(arr1: T[], arr2: T[]): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr1` (`T[]`): 結合する1つ目の配列。
|
||||
- `arr2` (`T[]`): 結合する2つ目の配列。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 結合され、重複した値が除かれた新しい配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array1 = [1, 2, 3];
|
||||
const array2 = [3, 4, 5];
|
||||
const result = union(array1, array2);
|
||||
// resultは [1, 2, 3, 4, 5] になります。
|
||||
```
|
29
docs/ja/reference/array/unionBy.md
Normal file
29
docs/ja/reference/array/unionBy.md
Normal file
@ -0,0 +1,29 @@
|
||||
# unionBy
|
||||
|
||||
`mapper` 関数が返す値を基準に、2つの配列の和集合を返します。
|
||||
|
||||
この関数は、パラメータとして2つの配列と `mapper` 関数を受け取ります。
|
||||
`mapper` 関数で2つの配列の要素を変換したとき、両方の配列に含まれる要素は除去されます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function unionBy<T, U>(arr1: T[], arr2: T[], mapper: (item: T) => U): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr1` (`T[]`): 1つ目の配列。
|
||||
- `arr2` (`T[]`): 2つ目の配列。
|
||||
- `mapper`: (`(item: T) => U`): 比較するために要素を新しい値に変換する関数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 1つ目の配列と2つ目の配列を結合し、`mapper` が返す値を基準にユニークな要素のみを含む新しい配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
unionBy([{ id: 1 }, { id: 2 }], [{ id: 2 }, { id: 3 }], x => x.id);
|
||||
// 結果は [{ id: 1 }, { id: 2 }, { id: 3 }] になります。
|
||||
```
|
32
docs/ja/reference/array/unionWith.md
Normal file
32
docs/ja/reference/array/unionWith.md
Normal file
@ -0,0 +1,32 @@
|
||||
# unionWith
|
||||
|
||||
2つの要素が一致するかどうかを判断するカスタム関数を基準に、2つの配列の和集合を返します。
|
||||
|
||||
この関数は、パラメータとして2つの配列とカスタム一致関数を受け取ります。
|
||||
この関数は、2つの配列を結合した後、カスタム一致関数の戻り値を基準に重複した要素を除去した新しい配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function unionWith<T>(arr1: T[], arr2: T[], areItemsEqual: (item1: T, item2: T) => boolean): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr1` (`T[]`): 比較する最初の配列。
|
||||
- `arr2` (`T[]`): 比較する2番目の配列。
|
||||
- `areItemsEqual` (`(x: T, y: T) => boolean`): 2つの要素が一致するかどうかを判断する一致関数です。2つの要素が一致する場合は `true` を、一致しない場合は `false` を返すようにしてください。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): カスタム一致関数の戻り値を基準に、2つの配列の和集合を表す新しい配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array1 = [{ id: 1 }, { id: 2 }];
|
||||
const array2 = [{ id: 2 }, { id: 3 }];
|
||||
const areItemsEqual = (a, b) => a.id === b.id;
|
||||
const result = unionWith(array1, array2, areItemsEqual);
|
||||
// 結果は [{ id: 1 }, { id: 2 }, { id: 3 }] になります。{ id: 2 } は両方の配列に含まれているためです。
|
||||
```
|
27
docs/ja/reference/array/uniq.md
Normal file
27
docs/ja/reference/array/uniq.md
Normal file
@ -0,0 +1,27 @@
|
||||
# uniq
|
||||
|
||||
配列内の要素の重複を削除します。
|
||||
|
||||
この関数は配列を受け取り、元の配列から一意の値のみを含む新しい配列を返します。新しい配列内の要素の順序は、元の配列で最初に登場する順序を維持します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function uniq<T>(arr: T[]): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 要素の重複を削除する配列です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): 元の配列から一意の要素のみを含む新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const array = [1, 2, 2, 3, 4, 4, 5];
|
||||
const result = uniq(array);
|
||||
// resultは[1, 2, 3, 4, 5]になります。
|
||||
```
|
25
docs/ja/reference/array/uniqBy.md
Normal file
25
docs/ja/reference/array/uniqBy.md
Normal file
@ -0,0 +1,25 @@
|
||||
# uniqBy
|
||||
|
||||
`mapper` 関数が返す値を基準に、配列内の要素の重複を除去します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function uniqBy<T, U>(arr: T[], mapper: (item: T) => U): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 重複を除去する配列。
|
||||
- `mapper` (`(item: T) => U`): 比較のために要素を新しい値に変換する関数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): `mapper` 関数が返す値を基準に重複が除去された配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
uniqBy([1.2, 1.5, 2.1, 3.2, 5.7, 5.3, 7.19], Math.floor);
|
||||
// [1.2, 2.1, 3.2, 5.7, 7.19]
|
||||
```
|
25
docs/ja/reference/array/uniqWith.md
Normal file
25
docs/ja/reference/array/uniqWith.md
Normal file
@ -0,0 +1,25 @@
|
||||
# uniqWith
|
||||
|
||||
2つの要素が一致するかどうかを判断するカスタム関数を基準に、配列内の要素の重複を除去します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function uniqWith<T>(arr: T[], areItemsEqual: (item1: T, item2: T) => boolean): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 重複を除去する配列。
|
||||
- `areItemsEqual` (`(x: T, y: T) => boolean`): 2つの要素が一致するかどうかを判断する一致関数です。2つの要素が一致する場合は `true` を、一致しない場合は `false` を返すようにしてください。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): カスタム一致関数の戻り値を基準に、重複が除去された新しい配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
uniqWith([1.2, 1.5, 2.1, 3.2, 5.7, 5.3, 7.19], (a, b) => Math.abs(a - b) < 1);
|
||||
// [1.2, 3.2, 5.7, 7.19]
|
||||
```
|
28
docs/ja/reference/array/unzip.md
Normal file
28
docs/ja/reference/array/unzip.md
Normal file
@ -0,0 +1,28 @@
|
||||
# unzip
|
||||
|
||||
2次元配列を引数として受け取り、各配列内の配列から同じ位置にある要素を集めて新しい配列として返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
type Unzip<K extends unknown[]> = { [I in keyof K]: Array<K[I]> };
|
||||
function unzip<T extends unknown[]>(zipped: Array<[...T]>): Unzip<T>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `zipped` (`Array<[...T]>`): 結合された要素の配列です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`Unzip<T>`): 内部配列の同じ位置にある要素を集めて作成された新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
unzip([
|
||||
['a', true, 1],
|
||||
['b', false, 2],
|
||||
]);
|
||||
// 戻り値: [['a', 'b'], [true, false], [1, 2]]
|
||||
```
|
30
docs/ja/reference/array/unzipWith.md
Normal file
30
docs/ja/reference/array/unzipWith.md
Normal file
@ -0,0 +1,30 @@
|
||||
# unzipWith
|
||||
|
||||
結合された2次元配列を1次元配列に解き、`iteratee`関数で値を変換して新しい配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function unzipWith<T, R>(target: T[][], iteratee: (...args: T[]) => R): R[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `target` (`T[][]`): 結合を解いて変換する配列です。
|
||||
- `iteratee` (`(...args: T[]) => R`): 結合が解かれた配列を変換する関数です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`R[]`): 結合を解いて変換された値で作られた新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const nestedArray = [
|
||||
[1, 2],
|
||||
[3, 4],
|
||||
[5, 6],
|
||||
];
|
||||
const result = unzipWith(nestedArray, (item, item2, item3) => item + item2 + item3);
|
||||
// [9, 12]
|
||||
```
|
42
docs/ja/reference/array/without.md
Normal file
42
docs/ja/reference/array/without.md
Normal file
@ -0,0 +1,42 @@
|
||||
# without
|
||||
|
||||
配列から指定された値を除いた新しい配列を作成します。
|
||||
|
||||
値の等価性は[SameValueZero](https://tc39.es/ecma262/multipage/abstract-operations.html#sec-samevaluezero)アルゴリズムを使用して比較されるため、`NaN`との比較も可能です。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function without<T>(array: T[], ...values: T[]): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `array` (`T[]`): 値を除去する対象の配列。
|
||||
- `values` (`...T[]`): 除去する値。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`) 指定された値を除いた新しい配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { without } from 'es-toolkit/array';
|
||||
|
||||
// 配列から指定された値を除去します
|
||||
without([1, 2, 3, 4, 5], 2, 4);
|
||||
// 結果: [1, 3, 5]
|
||||
|
||||
// 配列から指定された文字列値を除去します
|
||||
without(['a', 'b', 'c', 'a'], 'a');
|
||||
// 結果: ['b', 'c']
|
||||
|
||||
// 指定された値が配列に存在しない場合の処理
|
||||
without([1, 2, 3], 4, 5);
|
||||
// 結果: [1, 2, 3]
|
||||
|
||||
// 異なる型の値を含む場合の処理
|
||||
without([1, '2', 3, '4'], 2, '4');
|
||||
// 結果: [1, '2', 3]
|
||||
```
|
28
docs/ja/reference/array/xor.md
Normal file
28
docs/ja/reference/array/xor.md
Normal file
@ -0,0 +1,28 @@
|
||||
# xor
|
||||
|
||||
2つの配列間の対称差集合を計算します。対称差集合は、2つの配列のいずれかに含まれるが、両方には含まれない要素の集合です。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function xor<T>(arr1: T[], arr2: T[]): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr1` (`T[]`): 1つ目の配列です。
|
||||
- `arr2` (`T[]`): 2つ目の配列です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): `arr1`または`arr2`に含まれるが、両方の配列の共通部分には含まれない要素を含む配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
// [1, 2, 5, 6]を返します。
|
||||
xor([1, 2, 3, 4], [3, 4, 5, 6]);
|
||||
|
||||
// ['a', 'c']を返します。
|
||||
xor(['a', 'b'], ['b', 'c']);
|
||||
```
|
29
docs/ja/reference/array/xorBy.md
Normal file
29
docs/ja/reference/array/xorBy.md
Normal file
@ -0,0 +1,29 @@
|
||||
# xorBy
|
||||
|
||||
`mapper` 関数が返す値を基準に、2つの配列の対称差集合を返します。
|
||||
|
||||
この関数は、パラメータとして2つの配列と`mapper`関数を受け取ります。
|
||||
`mapper`関数で2つの配列の要素を変換した時、2つの配列のうち一方にはあるが共通部分にはない要素で構成される新しい配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function xorBy<T, U>(arr1: T[], arr2: T[], mapper: (item: T) => U): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr1` (`T[]`): 1つ目の配列です。
|
||||
- `arr2` (`T[]`): 2つ目の配列です。
|
||||
- `mapper` (`(item: T) => U`): 比較するために要素を新しい値に変換する関数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): `mapper`が返した値に基づいて、`arr1`または`arr2`にあるが両方にはない要素を含む配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
xorBy([{ id: 1 }, { id: 2 }], [{ id: 2 }, { id: 3 }], x => x.id);
|
||||
// [{ id: 1 }, { id: 3 }]を返します。
|
||||
```
|
29
docs/ja/reference/array/xorWith.md
Normal file
29
docs/ja/reference/array/xorWith.md
Normal file
@ -0,0 +1,29 @@
|
||||
# xorWith
|
||||
|
||||
2つの要素が一致するかどうかを判断するカスタム関数を基準に、2つの配列の対称差集合を返します。
|
||||
|
||||
この関数は、パラメータとして2つの配列とカスタム一致関数を受け取ります。
|
||||
この関数は2つの配列を結合した後、カスタム一致関数の戻り値を基準に、どちらか一方にのみ含まれる要素で構成される新しい配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function xorWith<T>(arr1: T[], arr2: T[], areElementsEqual: (item1: T, item2: T) => boolean): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr1` (`T[]`): 1つ目の配列です。
|
||||
- `arr2` (`T[]`): 2つ目の配列です。
|
||||
- `areItemsEqual` (`(x: T, y: T) => boolean`): 2つの要素が一致するかどうかを判断する一致関数です。2つの要素が一致する場合は `true` を、一致しない場合は `false` を返すようにしてください。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): カスタム一致関数の戻り値を基準に、2つの配列の対称差集合を表す新しい配列。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
xorWith([{ id: 1 }, { id: 2 }], [{ id: 2 }, { id: 3 }], (a, b) => a.id === b.id);
|
||||
// [{ id: 1 }, { id: 3 }] を返します。
|
||||
```
|
36
docs/ja/reference/array/zip.md
Normal file
36
docs/ja/reference/array/zip.md
Normal file
@ -0,0 +1,36 @@
|
||||
# zip
|
||||
|
||||
複数の配列を単一のタプルの配列に結合します。
|
||||
|
||||
この関数は複数の配列を入力として受け取り、各要素が入力配列の対応する要素を含むタプルである新しい配列を返します。入力配列の長さが異なる場合、結果の配列の長さは最も長い入力配列の長さになり、不足している要素は`undefined`で埋められます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function zip<T>(arr1: T[]): [T][];
|
||||
function zip<T, U>(arr1: T[], arr2: U[]): [T, U][];
|
||||
function zip<T, U, V>(arr1: T[], arr2: U[], arr3: V[]): [T, U, V][];
|
||||
function zip<T, U, V, W>(arr1: T[], arr2: U[], arr3: V[], arr4: W[]): [T, U, V, W][];
|
||||
function zip<T>(...arrs: T[][]): T[][];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `...arrs` (`T[][]`): 結合する配列です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[][]`): 入力配列の要素を含むタプルからなる新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const arr1 = [1, 2, 3];
|
||||
const arr2 = ['a', 'b', 'c'];
|
||||
const result = zip(arr1, arr2);
|
||||
// resultは [[1, 'a'], [2, 'b'], [3, 'c']] になります。
|
||||
|
||||
const arr3 = [true, false];
|
||||
const result2 = zip(arr1, arr2, arr3);
|
||||
// result2は [[1, 'a', true], [2, 'b', false], [3, 'c', undefined]] になります。
|
||||
```
|
39
docs/ja/reference/array/zipObject.md
Normal file
39
docs/ja/reference/array/zipObject.md
Normal file
@ -0,0 +1,39 @@
|
||||
# zipObject
|
||||
|
||||
2つの配列を1つのオブジェクトに結合します。最初の配列はプロパティ名を表し、2番目の配列は値を表します。
|
||||
|
||||
プロパティ名を表す配列が値を表す配列よりも長い場合、値は`undefined`で埋められます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function zipObject<P extends string | number | symbol, V>(keys: P[], values: V[]): { [K in P]: V };
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `keys` (`P[]`): プロパティ名が含まれる配列です。
|
||||
- `values` (`V[]`): プロパティ名に対応する値が含まれる配列です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`{ [K in P]: V }`): 与えられたプロパティ名と値で構成される新しいオブジェクトです。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const keys = ['a', 'b', 'c'];
|
||||
const values = [1, 2, 3];
|
||||
const result = zipObject(keys, values);
|
||||
// resultは { a: 1, b: 2, c: 3 } になります。
|
||||
|
||||
const keys2 = ['a', 'b', 'c'];
|
||||
const values2 = [1, 2];
|
||||
const result2 = zipObject(keys2, values2);
|
||||
// result2は { a: 1, b: 2, c: undefined } になります。
|
||||
|
||||
const keys3 = ['a', 'b'];
|
||||
const values3 = [1, 2, 3];
|
||||
const result3 = zipObject(keys3, values3);
|
||||
// result3は { a: 1, b: 2 } になります。
|
||||
```
|
48
docs/ja/reference/array/zipWith.md
Normal file
48
docs/ja/reference/array/zipWith.md
Normal file
@ -0,0 +1,48 @@
|
||||
# zipWith
|
||||
|
||||
カスタム結合関数を使用して複数の配列を単一の配列に結合します。
|
||||
この関数は複数の配列と結合関数を入力として受け取り、入力配列の要素に結合関数を適用した結果からなる新しい配列を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function zipWith<T, R>(arr1: T[], combine: (item: T) => R): R[];
|
||||
function zipWith<T, U, R>(arr1: T[], arr2: U[], combine: (item1: T, item2: U) => R): R[];
|
||||
function zipWith<T, U, V, R>(arr1: T[], arr2: U[], arr3: V[], combine: (item1: T, item2: U, item3: V) => R): R[];
|
||||
function zipWith<T, U, V, W, R>(
|
||||
arr1: T[],
|
||||
arr2: U[],
|
||||
arr3: V[],
|
||||
arr4: W[],
|
||||
combine: (item1: T, item2: U, item3: V, item4: W) => R
|
||||
): R[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr1` (`T[]`): 最初に結合する配列です。
|
||||
- `arr2` (`U[]`, オプション): 2番目に結合する配列です。
|
||||
- `arr3` (`V[]`, オプション): 3番目に結合する配列です。
|
||||
- `arr4` (`W[]`, オプション): 4番目に結合する配列です。
|
||||
- `combine` (`(item1: T, item2: U, item3: V, item4: W) => R`): 各配列の要素を受け取り、単一の値を返す結合関数です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`R[]`): 入力配列の要素に結合関数を適用した結果からなる新しい配列です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
// 2つの配列を使用した例:
|
||||
const arr1 = [1, 2, 3];
|
||||
const arr2 = [4, 5, 6];
|
||||
const result = zipWith(arr1, arr2, (a, b) => a + b);
|
||||
// resultは [5, 7, 9] になります。
|
||||
|
||||
// 3つの配列を使用した例:
|
||||
const arr1 = [1, 2];
|
||||
const arr2 = [3, 4];
|
||||
const arr3 = [5, 6];
|
||||
const result = zipWith(arr1, arr2, arr3, (a, b, c) => `${a}${b}${c}`);
|
||||
// resultは ['135', '246'] になります。
|
||||
```
|
43
docs/ja/reference/compat/array/concat.md
Normal file
43
docs/ja/reference/compat/array/concat.md
Normal file
@ -0,0 +1,43 @@
|
||||
# concat
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
複数の配列と値を1つの配列に連結します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function concat<T>(...values: Array<T | T[]>): T[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `values` (`...(T | T[])`): 連結する配列または値。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T[]`): すべての配列と値が連結された新しい配列。
|
||||
|
||||
### 例
|
||||
|
||||
```typescript
|
||||
// 値を連結
|
||||
concat(1, 2, 3);
|
||||
// 戻り値: [1, 2, 3]
|
||||
|
||||
// 配列を連結
|
||||
concat([1, 2], [3, 4]);
|
||||
// 戻り値: [1, 2, 3, 4]
|
||||
|
||||
// 値と配列を混ぜて連結
|
||||
concat(1, [2, 3], 4);
|
||||
// 戻り値: [1, 2, 3, 4]
|
||||
|
||||
// ネストされた配列を連結する場合
|
||||
concat([1, [2, 3]], 4);
|
||||
// 戻り値: [1, [2, 3], 4]
|
||||
```
|
119
docs/ja/reference/compat/array/find.md
Normal file
119
docs/ja/reference/compat/array/find.md
Normal file
@ -0,0 +1,119 @@
|
||||
# find
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
配列やオブジェクトから条件に合う最初の値を見つけます。
|
||||
|
||||
条件は複数の方法で指定できます。
|
||||
|
||||
- **検査関数**: 各要素に対して検査する関数を実行します。最初に `true` を返す値が選択されます。
|
||||
- **部分オブジェクト**: 与えられたオブジェクトと部分的に一致する最初の要素が選択されます。
|
||||
- **プロパティ-値ペア**: 該当プロパティに対して値が一致する最初の要素が選択されます。
|
||||
- **プロパティ名**: 該当プロパティに対して真と評価される値を持つ最初の要素が選択されます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function find<T>(arr: T[], doesMatch: (item: T, index: number, arr: T[]) => unknown): T | undefined;
|
||||
function find<T>(arr: T[], doesMatch: Partial<T>): T | undefined;
|
||||
function find<T>(arr: T[], doesMatch: [keyof T, unknown]): T | undefined;
|
||||
function find<T>(arr: T[], doesMatch: string): T | undefined;
|
||||
|
||||
function find<T extends Record<string, unknown>>(
|
||||
object: T,
|
||||
doesMatch: (item: T[keyof T], index: number, object: T) => unknown
|
||||
): T | undefined;
|
||||
function find<T extends Record<string, unknown>>(object: T, doesMatch: Partial<T[keyof T]>): T | undefined;
|
||||
function find<T extends Record<string, unknown>>(object: T, doesMatch: [keyof T, unknown]): T | undefined;
|
||||
function find<T extends Record<string, unknown>>(object: T, doesMatch: string): T | undefined;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`) または `object` (`T`): 検索する配列またはオブジェクト。
|
||||
|
||||
- `doesMatch`:
|
||||
|
||||
- 配列の場合:
|
||||
|
||||
- **検査関数** (`(item: T, index: number, arr: T[]) => unknown`): 探している要素かどうかを返す関数。
|
||||
- **部分オブジェクト** (`Partial<T>`): 一致させるプロパティと値を指定した部分オブジェクト。
|
||||
- **プロパティ-値ペア** (`[keyof T, unknown]`): 最初が一致させるプロパティ、2番目が一致させる値を表すタプル。
|
||||
- **プロパティ名** (`string`): 真と評価される値を持っているか確認するプロパティ名。
|
||||
|
||||
- オブジェクトの場合:
|
||||
- **検査関数** (`(item: T[keyof T], index: number, object: T) => unknown`): 探している要素かどうかを返す関数。
|
||||
- **部分値** (`Partial<T[keyof T]>`): 一致させるプロパティと値を指定した部分オブジェクト。
|
||||
- **プロパティ-値ペア** (`[keyof T, unknown]`): 最初が一致させるプロパティ、2番目が一致させる値を表すタプル。
|
||||
- **プロパティ名** (`string`): 真と評価される値を持っているか確認するプロパティ名。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T | undefined`): 与えられた条件を満たす最初の要素。ない場合は `undefined`。
|
||||
|
||||
## 例
|
||||
|
||||
### 配列の場合
|
||||
|
||||
```typescript
|
||||
import { find } from 'es-toolkit/compat';
|
||||
|
||||
// 検査関数を使う場合
|
||||
const items = [1, 2, 3, 4, 5];
|
||||
const result = find(items, item => item > 3);
|
||||
console.log(result); // 4
|
||||
|
||||
// 部分オブジェクトを使う場合
|
||||
const items = [
|
||||
{ id: 1, name: 'Alice' },
|
||||
{ id: 2, name: 'Bob' },
|
||||
];
|
||||
const result = find(items, { name: 'Bob' });
|
||||
console.log(result); // { id: 2, name: 'Bob' }
|
||||
|
||||
// プロパティ-値ペアを使う場合
|
||||
const items = [
|
||||
{ id: 1, name: 'Alice' },
|
||||
{ id: 2, name: 'Bob' },
|
||||
];
|
||||
const result = find(items, ['name', 'Alice']);
|
||||
console.log(result); // { id: 1, name: 'Alice' }
|
||||
|
||||
// プロパティ名を使う場合
|
||||
const items = [
|
||||
{ id: 1, name: 'Alice' },
|
||||
{ id: 2, name: 'Bob' },
|
||||
];
|
||||
const result = find(items, 'name');
|
||||
console.log(result); // { id: 1, name: 'Alice' }
|
||||
```
|
||||
|
||||
### オブジェクトの場合
|
||||
|
||||
```typescript
|
||||
import { find } from 'es-toolkit/compat';
|
||||
|
||||
// 検査関数を使う場合
|
||||
const obj = { a: 1, b: 2, c: 3 };
|
||||
const result = find(obj, item => item > 2);
|
||||
console.log(result); // 3
|
||||
|
||||
// 部分オブジェクトを使う場合
|
||||
const obj = { a: { id: 1, name: 'Alice' }, b: { id: 2, name: 'Bob' } };
|
||||
const result = find(obj, { name: 'Bob' });
|
||||
console.log(result); // { id: 2, name: 'Bob' }
|
||||
|
||||
// プロパティ-値ペアを使う場合
|
||||
const items = { alice: { id: 1, name: 'Alice' }, bob: { id: 2, name: 'Bob' } };
|
||||
const result = find(items, ['name', 'Alice']);
|
||||
console.log(result); // { id: 1, name: 'Alice' }
|
||||
|
||||
// プロパティ名を使う場合
|
||||
const obj = { a: { id: 1, name: 'Alice' }, b: { id: 2, name: 'Bob' } };
|
||||
const result = find(obj, 'name');
|
||||
console.log(result); // { id: 1, name: 'Alice' }
|
||||
```
|
75
docs/ja/reference/compat/array/findIndex.md
Normal file
75
docs/ja/reference/compat/array/findIndex.md
Normal file
@ -0,0 +1,75 @@
|
||||
# findIndex
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
配列から条件に合う最初の値のインデックスを返します。
|
||||
|
||||
条件は複数の方法で指定できます。
|
||||
|
||||
- **検査関数**: 各要素に対して検査する関数を実行します。最初に `true` を返す値が選択されます。
|
||||
- **部分オブジェクト**: 与えられたオブジェクトと部分的に一致する最初の要素が選択されます。
|
||||
- **プロパティ-値ペア**: 該当プロパティに対して値が一致する最初の要素が選択されます。
|
||||
- **プロパティ名**: 該当プロパティに対して真と評価される値を持つ最初の要素が選択されます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```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;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `arr` (`T[]`): 検索する配列。
|
||||
|
||||
- `doesMatch`:
|
||||
|
||||
- **検査関数** (`(item: T, index: number, arr: T[]) => unknown`): 探している要素かどうかを返す関数。
|
||||
- **部分オブジェクト** (`Partial<T>`): 一致させるプロパティと値を指定した部分オブジェクト。
|
||||
- **プロパティ-値ペア** (`[keyof T, unknown]`): 最初が一致させるプロパティ、2番目が一致させる値を表すタプル。
|
||||
- **プロパティ名** (`string`): 真と評価される値を持っているか確認するプロパティ名。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`number`): 与えられた条件を満たす最初の要素のインデックス。ない場合は `-1`。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { findIndex } from 'es-toolkit/compat';
|
||||
|
||||
// 検査関数を使う場合
|
||||
const items = [1, 2, 3, 4, 5];
|
||||
const result = findIndex(items, item => item > 3);
|
||||
console.log(result); // 3
|
||||
|
||||
// 部分オブジェクトを使う場合
|
||||
const items = [
|
||||
{ id: 1, name: 'Alice' },
|
||||
{ id: 2, name: 'Bob' },
|
||||
];
|
||||
const result = findIndex(items, { name: 'Bob' });
|
||||
console.log(result); // 0
|
||||
|
||||
// プロパティ-値ペアを使う場合
|
||||
const items = [
|
||||
{ id: 1, name: 'Alice' },
|
||||
{ id: 2, name: 'Bob' },
|
||||
];
|
||||
const result = findIndex(items, ['name', 'Alice']);
|
||||
console.log(result); // 0
|
||||
|
||||
// プロパティ名を使う場合
|
||||
const items = [
|
||||
{ id: 1, name: 'Alice' },
|
||||
{ id: 2, name: 'Bob' },
|
||||
];
|
||||
const result = findIndex(items, 'name');
|
||||
console.log(result); // 0
|
||||
```
|
36
docs/ja/reference/compat/array/indexOf.md
Normal file
36
docs/ja/reference/compat/array/indexOf.md
Normal file
@ -0,0 +1,36 @@
|
||||
# indexOf
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
配列内で指定された要素が最初に一致するインデックスを見つけます。
|
||||
|
||||
`Array.prototype.indexOf` とほぼ同じように動作しますが、`NaN` 値を見つけることができます。
|
||||
`NaN` 以外の要素を比較する際は、厳密等価演算子(`===`)を使用します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function indexOf<T>(array: T[] | null | undefined, searchElement: T, fromIndex?: number): number;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `array` (`T[] | null | undefined`): 検索対象の配列。
|
||||
- `searchElement` (`T`): 検索する値。
|
||||
- `fromIndex` (`number`, オプション): 検索を開始するインデックス。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`number`): 配列内で指定された値と最初に一致する要素のインデックス。一致する要素が見つからない場合は `-1` を返します。
|
||||
|
||||
### 例
|
||||
|
||||
```typescript
|
||||
const array = [1, 2, 3, NaN];
|
||||
indexOf(array, 3); // => 2
|
||||
indexOf(array, NaN); // => 3
|
||||
```
|
34
docs/ja/reference/compat/array/max.md
Normal file
34
docs/ja/reference/compat/array/max.md
Normal file
@ -0,0 +1,34 @@
|
||||
# max
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
配列から最大値を持つ要素を返します。
|
||||
|
||||
配列が空の場合は、`undefined` を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function max<T>(items: [T, ...T[]]): T;
|
||||
function max(): undefined;
|
||||
function max<T>(items?: T[]): T | undefined;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `items` (`T[]`): 最大値を持つ要素を探す配列。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T`): 配列から最大値を持つ要素。配列が空の場合は `undefined` を返します。
|
||||
|
||||
### 例
|
||||
|
||||
```typescript
|
||||
max([1, 2, 3]); // 戻り値: 3
|
||||
max(['a', 'b']); // 戻り値: 'b'
|
||||
```
|
34
docs/ja/reference/compat/array/min.md
Normal file
34
docs/ja/reference/compat/array/min.md
Normal file
@ -0,0 +1,34 @@
|
||||
# min
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API が存在するか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
配列から最小値を持つ要素を返します。
|
||||
|
||||
配列が空の場合は、`undefined` を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function min<T>(items: [T, ...T[]]): T;
|
||||
function min(): undefined;
|
||||
function min<T>(items?: T[]): T | undefined;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `items` (`T[]`): 最小値を持つ要素を探す配列。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T`): 配列の中で最小値を持つ要素。配列が空の場合は `undefined` を返します。
|
||||
|
||||
### 例
|
||||
|
||||
```typescript
|
||||
min([1, 2, 3]); // 戻り値: 1
|
||||
min(['a', 'b']); // 戻り値: 'a'
|
||||
```
|
53
docs/ja/reference/compat/array/size.md
Normal file
53
docs/ja/reference/compat/array/size.md
Normal file
@ -0,0 +1,53 @@
|
||||
# size
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
与えられた引数のサイズを返します。
|
||||
|
||||
配列、文字列、数値のサイズを計算します。配列は含まれる要素の数を、文字列は文字の数を、オブジェクトは列挙可能なプロパティの数を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function size<T>(value: T[] | object | string | Map<unknown, T> | Set<T> | null | undefined): number;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `value` (`T`): サイズを確認する配列、文字列、またはオブジェクト。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`number`): 入力値のサイズ。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const arr = [1, 2, 3];
|
||||
const arrSize = size(arr);
|
||||
// arrSize は 3 です。
|
||||
|
||||
const str = 'hello';
|
||||
const strSize = size(str);
|
||||
// strSize は 5 です。
|
||||
|
||||
const obj = { a: 1, b: 2, c: 3 };
|
||||
const objSize = size(obj);
|
||||
// objSize は 3 です。
|
||||
|
||||
const emptyArr = [];
|
||||
const emptyArrSize = size(emptyArr);
|
||||
// emptyArrSize は 0 です。
|
||||
|
||||
const emptyStr = '';
|
||||
const emptyStrSize = size(emptyStr);
|
||||
// emptyStrSize は 0 です。
|
||||
|
||||
const emptyObj = {};
|
||||
const emptyObjSize = size(emptyObj);
|
||||
// emptyObjSize は 0 です。
|
||||
```
|
57
docs/ja/reference/compat/array/zipObjectDeep.md
Normal file
57
docs/ja/reference/compat/array/zipObjectDeep.md
Normal file
@ -0,0 +1,57 @@
|
||||
# zipObjectDeep
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替となるネイティブ JavaScript API が存在するか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
2つの配列を1つのオブジェクトに結合します。最初の配列はプロパティパスを表し、2番目の配列は値を表します。[zipObject](../../array/zipObject.md) とは異なり、プロパティとして `a.b` のようなパスを指定できます。
|
||||
|
||||
プロパティ名を表す配列が値を表す配列よりも長い場合、値は `undefined` で埋められます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function zipObjectDeep<P extends string | number | symbol, V>(keys: P[], values: V[]): { [K in P]: V };
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `keys` (`P[]`): プロパティパスを含む配列。
|
||||
- `values` (`V[]`): 対応する値を含む配列。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`{ [K in P]: V }`): 与えられたプロパティ名と値で構成される新しいオブジェクトです。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { zipObjectDeep } from 'es-toolkit/compat';
|
||||
|
||||
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 } } } になります
|
||||
|
||||
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 } } } になります
|
||||
|
||||
const paths = ['a.b[0].c', 'a.b[1].d'];
|
||||
const values = [1, 2];
|
||||
const result = zipObjectDeep(paths, values);
|
||||
// result は { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } になります
|
||||
```
|
||||
|
||||
## パフォーマンス比較
|
||||
|
||||
| | [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 |
|
54
docs/ja/reference/compat/function/bind.md
Normal file
54
docs/ja/reference/compat/function/bind.md
Normal file
@ -0,0 +1,54 @@
|
||||
# bind
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
関数の `this` を固定し、`partialArgs` で事前に引数を提供します。
|
||||
|
||||
Symbol 型の `bind.placeholder` を使用すると、事前に提供した引数が使用される位置を決定できます。
|
||||
|
||||
組み込みの `Function#bind` とは異なり、関数の `length` プロパティは設定しません。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function bind<F extends Function>(func: F, thisObj?: unknown, ...partialArgs: any[]): F;
|
||||
|
||||
namespace bind {
|
||||
placeholder: symbol;
|
||||
}
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `func` (`F`): `this` を固定する関数。
|
||||
- `thisObj` (`any`, オプション): 関数に固定される `this` オブジェクト。
|
||||
- `partialArgs` (`any[]`): 事前に与えられる引数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`F`): `this` が固定された関数。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { bind } from 'es-toolkit/compat';
|
||||
|
||||
function greet(greeting, punctuation) {
|
||||
return greeting + ' ' + this.user + punctuation;
|
||||
}
|
||||
|
||||
const object = { user: 'fred' };
|
||||
|
||||
let bound = bind(greet, object, 'hi');
|
||||
bound('!');
|
||||
// => 'hi fred!'
|
||||
|
||||
// プレースホルダーを使用してバインド
|
||||
bound = bind(greet, object, bind.placeholder, '!');
|
||||
bound('hi');
|
||||
// => 'hi fred!'
|
||||
```
|
113
docs/ja/reference/compat/object/get.md
Normal file
113
docs/ja/reference/compat/object/get.md
Normal file
@ -0,0 +1,113 @@
|
||||
# get
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
オブジェクトから指定されたパスにある値を取得します。その値が `undefined` の場合、デフォルト値を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```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, 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], 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>(object: Record<number, T>, path: number): T;
|
||||
function get<T>(object: Record<number, T> | null | undefined, path: number): T | undefined;
|
||||
function get<T, D>(object: Record<number, T> | null | undefined, path: number, defaultValue: D): T | D;
|
||||
|
||||
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(object: unknown, path: PropertyKey, defaultValue?: unknown): any;
|
||||
function get(object: unknown, path: PropertyKey | readonly PropertyKey[], defaultValue?: unknown): any;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `obj` (`object`): 検索対象のオブジェクト。
|
||||
- `path` (`string` または `number` または `symbol` または `Array<string | number | symbol>`): プロパティを取得するパス。
|
||||
- `defaultValue` (`unknown`): 見つかった値が `undefined` の場合に返す値。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`Get<T, P>`): 見つかった値。
|
||||
|
||||
### 例
|
||||
|
||||
```typescript
|
||||
import { get } from 'es-toolkit/compat';
|
||||
|
||||
const obj = {
|
||||
a: {
|
||||
b: 4,
|
||||
},
|
||||
};
|
||||
|
||||
get(obj, 'a.b'); // 4
|
||||
get(obj, ['a', 'b']); // 4
|
||||
get(obj, ['a', 'c']); // undefined
|
||||
get(obj, ['a', 'c'], null); // null
|
||||
```
|
60
docs/ja/reference/compat/object/has.md
Normal file
60
docs/ja/reference/compat/object/has.md
Normal file
@ -0,0 +1,60 @@
|
||||
# has
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
オブジェクトが指定されたパスに対応するプロパティを持っているかどうかを確認します。
|
||||
|
||||
パスとしては、オブジェクトのプロパティ名、プロパティ名の配列、または深いパスを表す文字列を使用できます。
|
||||
|
||||
パスがインデックスを表し、オブジェクトが配列または `arguments` オブジェクトの場合、そのインデックスが有効か(0以上で長さ未満か)を確認します。そのため、すべてのインデックスが定義されていないスパース配列(Sparse array)にも使用できます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function has(object: unknown, path: string | number | symbol | Array<string | number | symbol>): boolean;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `object` (`unknown`): プロパティの存在を確認するオブジェクト。
|
||||
- `path` (`string`, `number`, `symbol`, `Array<string | number | symbol>`): プロパティの存在を確認するパス。プロパティ名、プロパティ名の配列、または深いパスを表す文字列を使用できます。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`boolean`): オブジェクトがパスに値を持っている場合は `true`、そうでない場合は `false`。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { has } from 'es-toolkit/compat';
|
||||
|
||||
const obj = { a: { b: { c: 3 } } };
|
||||
|
||||
has(obj, 'a'); // true
|
||||
has(obj, ['a', 'b']); // true
|
||||
has(obj, ['a', 'b', 'c']); // true
|
||||
has(obj, 'a.b.c'); // true
|
||||
has(obj, 'a.b.d'); // false
|
||||
has(obj, ['a', 'b', 'c', 'd']); // false
|
||||
has([], 0); // false
|
||||
has([1, 2, 3], 2); // true
|
||||
has([1, 2, 3], 5); // false
|
||||
```
|
||||
|
||||
## デモ
|
||||
|
||||
::: sandpack
|
||||
|
||||
```ts index.ts
|
||||
import { has } from 'es-toolkit/compat';
|
||||
|
||||
const obj = { a: { b: { c: 3 } } };
|
||||
|
||||
console.log(has(obj, 'a.b.c'));
|
||||
```
|
||||
|
||||
:::
|
37
docs/ja/reference/compat/object/property.md
Normal file
37
docs/ja/reference/compat/object/property.md
Normal file
@ -0,0 +1,37 @@
|
||||
# property
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
オブジェクトの指定されたパスにある値を取得する関数を作成します。値を取得するには [`get`](./get.md) 関数を使用します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function property(path: PropertyKey | readonly PropertyKey[]): (object: unknown) => any;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `path` (`string` または `number` または `symbol` または `Array<string | number | symbol>`): プロパティを取得するパス。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`(object: unknown) => any`): オブジェクトの指定されたパスにある値を取得する関数。
|
||||
|
||||
### 例
|
||||
|
||||
```typescript
|
||||
import { property } from 'es-toolkit/compat';
|
||||
|
||||
const getObjectValue = property('a.b.c');
|
||||
const result = getObjectValue({ a: { b: { c: 3 } } });
|
||||
console.log(result); // => 3
|
||||
|
||||
const getObjectValue = property(['a', 'b', 'c']);
|
||||
const result = getObjectValue({ a: { b: { c: 3 } } });
|
||||
console.log(result); // => 3
|
||||
```
|
58
docs/ja/reference/compat/object/set.md
Normal file
58
docs/ja/reference/compat/object/set.md
Normal file
@ -0,0 +1,58 @@
|
||||
# set
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API が存在するか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
指定されたパスに与えられた値を設定します。パスの一部が存在しない場合は作成されます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function set<T extends object>(
|
||||
obj: T,
|
||||
path: string | number | symbol | Array<string | number | symbol>,
|
||||
value: unknown
|
||||
): T;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `obj` (`T`): 値を設定するオブジェクト。
|
||||
- `path` (`string | number | symbol | Array<string | number | symbol>`): 値を設定するプロパティのパス。
|
||||
- `value` (`unknown`): 設定する値。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`T`): 修正されたオブジェクトを返します。T を指定しない場合は unknown です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { set } from 'es-toolkit/compat';
|
||||
|
||||
// ネストされたオブジェクトに値を設定
|
||||
const obj = { a: { b: { c: 3 } } };
|
||||
set(obj, 'a.b.c', 4);
|
||||
console.log(obj.a.b.c); // 4
|
||||
|
||||
// 配列に値を設定
|
||||
const arr = [1, 2, 3];
|
||||
set(arr, 1, 4);
|
||||
console.log(arr[1]); // 4
|
||||
|
||||
// 存在しないパスを作成して値を設定
|
||||
const obj2 = {};
|
||||
set(obj2, 'a.b.c', 4);
|
||||
console.log(obj2); // { a: { b: { c: 4 } } }
|
||||
|
||||
// インターフェースの使用
|
||||
interface O {
|
||||
a: number;
|
||||
}
|
||||
const obj3 = {};
|
||||
const result = set<O>(obj3, 'a', 1); // result の型 = { a: number }
|
||||
console.log(result); // { a: 1 }
|
||||
```
|
46
docs/ja/reference/compat/predicate/isArguments.md
Normal file
46
docs/ja/reference/compat/predicate/isArguments.md
Normal file
@ -0,0 +1,46 @@
|
||||
# isArguments
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API が存在するか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
与えられた値が `arguments` オブジェクトかどうかを確認します。
|
||||
|
||||
この関数は、与えられた値が `arguments` オブジェクトであれば `true`、そうでなければ `false` を返します。
|
||||
|
||||
TypeScript の型ガードとして使用できます。パラメータとして与えられた値の型を `IArguments` に絞り込みます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function isArguments(value?: unknown): value is IArguments;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `value` (`unknown`): `arguments` オブジェクトかどうかを確認する値です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`value is IArguments`): 与えられた値が `arguments` オブジェクトであれば `true`、そうでなければ `false` を返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { isArguments } from 'es-toolkit/predicate';
|
||||
|
||||
const args = (function () {
|
||||
return arguments;
|
||||
})();
|
||||
const strictArgs = (function () {
|
||||
'use strict';
|
||||
return arguments;
|
||||
})();
|
||||
const value = [1, 2, 3];
|
||||
|
||||
console.log(isArguments(args)); // true
|
||||
console.log(isArguments(strictArgs)); // true
|
||||
console.log(isArguments(value)); // false
|
||||
```
|
40
docs/ja/reference/compat/predicate/isArray.md
Normal file
40
docs/ja/reference/compat/predicate/isArray.md
Normal file
@ -0,0 +1,40 @@
|
||||
# isArray
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API が存在するか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
与えられた値が配列かどうかを確認します。
|
||||
|
||||
この関数は、与えられた値が配列かどうかを確認します。
|
||||
値が配列であれば `true`、そうでなければ `false` を返します。
|
||||
|
||||
TypeScript の型ガードとしてよく使用され、パラメータとして与えられた値を配列型に絞り込むことができます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function isArray(value?: unknown): value is any[];
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `value` (`unknown`): 配列かどうかを確認する値。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`value is any[]`): 値が配列であれば `true`、そうでなければ `false`。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const value1 = [1, 2, 3];
|
||||
const value2 = 'abc';
|
||||
const value3 = () => {};
|
||||
|
||||
console.log(isArray(value1)); // true
|
||||
console.log(isArray(value2)); // false
|
||||
console.log(isArray(value3)); // false
|
||||
```
|
40
docs/ja/reference/compat/predicate/isArrayLike.md
Normal file
40
docs/ja/reference/compat/predicate/isArrayLike.md
Normal file
@ -0,0 +1,40 @@
|
||||
# isArrayLike
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替となるネイティブ JavaScript API が存在するか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
与えられた値が配列のようなオブジェクトかどうかを確認します。
|
||||
|
||||
配列のようなオブジェクトは、`null` でも `undefined` でも関数でもなく、`length` プロパティが有効な長さを持つオブジェクトです。
|
||||
|
||||
TypeScript の型ガードとして使用できます。パラメータとして与えられた値の型を `ArrayLike<unknown>` に絞り込みます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function isArrayLike(value: unknown): value is ArrayLike<unknown>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `value` (`unknown`): 配列のようなオブジェクトかどうかを確認する値です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`value is ArrayLike<unknown>`): 与えられた値がArrayLikeオブジェクトであれば `true`、そうでなければ `false` を返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { isArrayLike } from 'es-toolkit/predicate';
|
||||
|
||||
console.log(isArrayLike([1, 2, 3])); // true
|
||||
console.log(isArrayLike('abc')); // true
|
||||
console.log(isArrayLike({ 0: 'a', length: 1 })); // true
|
||||
console.log(isArrayLike({})); // false
|
||||
console.log(isArrayLike(null)); // false
|
||||
console.log(isArrayLike(undefined)); // false
|
||||
```
|
59
docs/ja/reference/compat/predicate/isMatch.md
Normal file
59
docs/ja/reference/compat/predicate/isMatch.md
Normal file
@ -0,0 +1,59 @@
|
||||
# isMatch
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API が存在するか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
`target` が `source` の形状と値に一致するかどうかを確認します。オブジェクト、配列、`Map`、`Set` の深い比較をサポートしています。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function isMatch(target: unknown, source: unknown): boolean;
|
||||
```
|
||||
|
||||
## パラメータ
|
||||
|
||||
- `target` (`unknown`): 形状と値が一致するかどうかを確認する値。
|
||||
- `source` (`unknown`): 確認する形状と値を持つオブジェクト。
|
||||
|
||||
## 戻り値
|
||||
|
||||
- (`boolean`): `target` が `source` の形状と値に一致する場合は `true`。そうでない場合は `false`。
|
||||
|
||||
## 例
|
||||
|
||||
### オブジェクトの一致
|
||||
|
||||
```typescript
|
||||
isMatch({ a: 1, b: 2 }, { a: 1 }); // true
|
||||
```
|
||||
|
||||
### 配列の一致
|
||||
|
||||
```typescript
|
||||
isMatch([1, 2, 3], [1, 2, 3]); // true
|
||||
isMatch([1, 2, 2, 3], [2, 2]); // true
|
||||
isMatch([1, 2, 3], [2, 2]); // false
|
||||
```
|
||||
|
||||
### `Map` の一致
|
||||
|
||||
```typescript
|
||||
const targetMap = new Map([
|
||||
['key1', 'value1'],
|
||||
['key2', 'value2'],
|
||||
]);
|
||||
const sourceMap = new Map([['key1', 'value1']]);
|
||||
isMatch(targetMap, sourceMap); // true
|
||||
```
|
||||
|
||||
### `Set` の一致
|
||||
|
||||
```javascript
|
||||
const targetSet = new Set([1, 2, 3]);
|
||||
const sourceSet = new Set([1, 2]);
|
||||
isMatch(targetSet, sourceSet); // true
|
||||
```
|
45
docs/ja/reference/compat/predicate/isObjectLike.md
Normal file
45
docs/ja/reference/compat/predicate/isObjectLike.md
Normal file
@ -0,0 +1,45 @@
|
||||
# isObjectLike
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
与えられた値がオブジェクトのようであるかを確認します。
|
||||
|
||||
オブジェクトのような値とは、`typeof` 演算の結果が `'object'` で、`null` ではない値のことを指します。
|
||||
|
||||
TypeScript の型ガードとして使用できます。パラメータとして与えられた値の型をオブジェクトのような値に絞り込みます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
export function isObjectLike(value: unknown): value is object;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `value` (`T`): オブジェクトのようであるかを確認する値です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`value is object`): 与えられた値がオブジェクトのようであれば `true`、そうでなければ `false` を返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { isObjectLike } from 'es-toolkit/predicate';
|
||||
|
||||
const value1 = { a: 1 };
|
||||
const value2 = [1, 2, 3];
|
||||
const value3 = 'abc';
|
||||
const value4 = () => {};
|
||||
const value5 = null;
|
||||
|
||||
console.log(isObjectLike(value1)); // true
|
||||
console.log(isObjectLike(value2)); // true
|
||||
console.log(isObjectLike(value3)); // false
|
||||
console.log(isObjectLike(value4)); // false
|
||||
console.log(isObjectLike(value5)); // false
|
||||
```
|
53
docs/ja/reference/compat/predicate/matches.md
Normal file
53
docs/ja/reference/compat/predicate/matches.md
Normal file
@ -0,0 +1,53 @@
|
||||
# matches
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
`source` の形と値と一致するかどうかを確認する関数を作成します。
|
||||
オブジェクト、配列、`Map`、`Set` との深い比較をサポートします。
|
||||
|
||||
この関数の動作は [isMatch](./isMatch.md) と同じで、呼び出し方法のみが異なります。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function matches(source: unknown): (target: unknown) => boolean;
|
||||
```
|
||||
|
||||
## パラメータ
|
||||
|
||||
- `source` (`unknown`): 確認する関数が参照するオブジェクト。
|
||||
|
||||
## 戻り値
|
||||
|
||||
- (`(target: unknown) => boolean`): `source` の形と値と一致するかどうかを確認する関数。`target` が `source` と一致すると `true`、さもなくば `false` を返します。
|
||||
|
||||
## 例
|
||||
|
||||
### オブジェクトの一致
|
||||
|
||||
```typescript
|
||||
const matcher = matches({ a: 1, b: 2 });
|
||||
matcher({ a: 1, b: 2, c: 3 }); // true
|
||||
matcher({ a: 1, c: 3 }); // false
|
||||
```
|
||||
|
||||
### 配列の一致
|
||||
|
||||
```typescript
|
||||
const arrayMatcher = matches([1, 2, 3]);
|
||||
arrayMatcher([1, 2, 3, 4]); // true
|
||||
arrayMatcher([4, 5, 6]); // false
|
||||
```
|
||||
|
||||
### ネストされた構造の一致
|
||||
|
||||
```typescript
|
||||
// Matching objects with nested structures
|
||||
const nestedMatcher = matches({ a: { b: 2 } });
|
||||
nestedMatcher({ a: { b: 2, c: 3 } }); // true
|
||||
nestedMatcher({ a: { c: 3 } }); // false
|
||||
```
|
45
docs/ja/reference/compat/predicate/matchesProperty.md
Normal file
45
docs/ja/reference/compat/predicate/matchesProperty.md
Normal file
@ -0,0 +1,45 @@
|
||||
# matchesProperty
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API が存在するか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
与えられたオブジェクトのプロパティが `source` の形状と値に一致するかどうかを確認する関数を作成します。
|
||||
|
||||
返される関数は `target` オブジェクトを受け取り、指定されたプロパティの値が `source` と一致するかどうかを確認します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function matchesProperty(property: PropertyKey | PropertyKey[], source: unknown): (target?: unknown) => boolean;
|
||||
```
|
||||
|
||||
## パラメータ
|
||||
|
||||
- `property` (`number | string | symbol | Array<number | string | symbol>`): オブジェクトのプロパティを表すパス。プロパティ名、プロパティ名の配列、または深いパスを表す文字列を使用できます。
|
||||
- `source` (`unknown`): オブジェクトのプロパティと比較する値。
|
||||
|
||||
## 戻り値
|
||||
|
||||
- (`(target: unknown) => boolean`): `target` オブジェクトを受け取り、指定されたプロパティの値を取得し、`source` と一致するかどうかを確認する関数。一致する場合は `true`、そうでない場合は `false` を返します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
// 単純なプロパティ名
|
||||
const checkName = matchesProperty('name', 'Alice');
|
||||
console.log(checkName({ name: 'Alice' })); // true
|
||||
console.log(checkName({ name: 'Bob' })); // false
|
||||
|
||||
// プロパティの配列
|
||||
const checkNested = matchesProperty(['address', 'city'], '東京');
|
||||
console.log(checkNested({ address: { city: '東京' } })); // true
|
||||
console.log(checkNested({ address: { city: '大阪' } })); // false
|
||||
|
||||
// 深いパス
|
||||
const checkNested = matchesProperty('address.city', '東京');
|
||||
console.log(checkNested({ address: { city: '東京' } })); // true
|
||||
console.log(checkNested({ address: { city: '大阪' } })); // false
|
||||
```
|
36
docs/ja/reference/compat/string/endsWith.md
Normal file
36
docs/ja/reference/compat/string/endsWith.md
Normal file
@ -0,0 +1,36 @@
|
||||
# endsWith
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API が存在するか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
文字列が指定された文字列で終わるかどうかを確認します。検索を終了するインデックスを指定することができます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function endsWith(str: string, target: string, position: number = 0): boolean;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `str` (`string`): 検索する文字列。
|
||||
- `target` (`string`): 終わりに一致すべき文字列。
|
||||
- `position` (`number`, オプション): 検索を終了するインデックス。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`boolean`): 文字列が指定された文字列で終わるかどうか。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { endsWith } from 'es-toolkit/compat';
|
||||
|
||||
endsWith('fooBar', 'foo'); // false を返す
|
||||
endsWith('fooBar', 'Bar'); // true を返す
|
||||
endsWith('fooBar', 'abcdef'); // false を返す
|
||||
endsWith('fooBar', 'Bar', 3); // false を返す
|
||||
```
|
35
docs/ja/reference/compat/string/padEnd.md
Normal file
35
docs/ja/reference/compat/string/padEnd.md
Normal file
@ -0,0 +1,35 @@
|
||||
# padEnd
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API が存在するか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
文字列を指定された長さになるまで末尾に文字を追加して拡張します。
|
||||
|
||||
すでに文字列が十分に長いか、末尾に追加する文字が空文字列の場合、何も動作しません。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function padEnd(str: string, length = 0, chars = ' '): string;
|
||||
```
|
||||
|
||||
## パラメータ
|
||||
|
||||
- `str` (`string`): 長さを拡張する文字列。
|
||||
- `length` (`number`): 拡張したい長さ。デフォルト値は `0`。
|
||||
- `char` (`string`): 長さを拡張する際に追加する文字。デフォルト値は `' '`。
|
||||
|
||||
## 戻り値
|
||||
|
||||
指定された長さまで拡張され、末尾に文字が追加された文字列。
|
||||
|
||||
## 例
|
||||
|
||||
```javascript
|
||||
padEnd('hello', 10, 'a'); // 'helloaaaaa'
|
||||
padEnd('hello', 3, 'a'); // 'hello'
|
||||
padEnd('hello', 5, ''); // 'hello'
|
||||
```
|
35
docs/ja/reference/compat/string/padStart.md
Normal file
35
docs/ja/reference/compat/string/padStart.md
Normal file
@ -0,0 +1,35 @@
|
||||
# padStart
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
文字列を指定された長さになるまで、先頭に文字を追加して拡張します。
|
||||
|
||||
すでに文字列が十分に長いか、先頭に追加する文字が空文字列の場合は、何も動作しません。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function padStart(str: string, length = 0, chars = ' '): string;
|
||||
```
|
||||
|
||||
## パラメータ
|
||||
|
||||
- `str` (`string`): 長さを拡張する文字列。
|
||||
- `length` (`number`): 拡張したい長さ。デフォルト値は `0`。
|
||||
- `char` (`string`): 長さを拡張する際に追加する文字。デフォルト値は `' '`。
|
||||
|
||||
## 戻り値
|
||||
|
||||
指定された長さまで拡張され、先頭に文字が追加された文字列。
|
||||
|
||||
## 例
|
||||
|
||||
```javascript
|
||||
padStart('hello', 10, 'a'); // 'aaaaahello'
|
||||
padStart('hello', 3, 'a'); // 'hello'
|
||||
padStart('hello', 5, ''); // 'hello'
|
||||
```
|
36
docs/ja/reference/compat/string/startsWith.md
Normal file
36
docs/ja/reference/compat/string/startsWith.md
Normal file
@ -0,0 +1,36 @@
|
||||
# startsWith
|
||||
|
||||
::: info
|
||||
この関数は互換性のために `es-toolkit/compat` からのみインポートできます。代替可能なネイティブ JavaScript API が存在するか、まだ十分に最適化されていないためです。
|
||||
|
||||
`es-toolkit/compat` からこの関数をインポートすると、[lodash と完全に同じように動作](../../../compatibility.md)します。
|
||||
:::
|
||||
|
||||
文字列が指定された文字列で始まるかどうかを確認します。検索を開始するインデックスを指定することができます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function startsWith(str: string, target: string, position: number = 0): boolean;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `str` (`string`): 検索する文字列。
|
||||
- `target` (`string`): 開始時に一致すべき文字列。
|
||||
- `position` (`number`, オプション): 検索を開始するインデックス。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`boolean`): 文字列が指定された文字列で始まるかどうか。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { startsWith } from 'es-toolkit/compat';
|
||||
|
||||
startsWith('fooBar', 'foo'); // true を返す
|
||||
startsWith('fooBar', 'Bar'); // false を返す
|
||||
startsWith('fooBar', 'abcdef'); // false を返す
|
||||
startsWith('fooBar', 'Bar', 3); // true を返す
|
||||
```
|
13
docs/ja/reference/error/AbortError.md
Normal file
13
docs/ja/reference/error/AbortError.md
Normal file
@ -0,0 +1,13 @@
|
||||
# AbortError
|
||||
|
||||
操作が中断または取り消された時にスローされるエラーです。
|
||||
|
||||
[debounce](../function/debounce.md)や[delay](../promise/delay.md)などの操作が`AbortSignal`によってキャンセルされた時にスローされます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
class AbortError extends Error {
|
||||
name = 'AbortError',
|
||||
}
|
||||
```
|
13
docs/ja/reference/error/TimeoutError.md
Normal file
13
docs/ja/reference/error/TimeoutError.md
Normal file
@ -0,0 +1,13 @@
|
||||
# TimeoutError
|
||||
|
||||
制限時間が過ぎたときに投げられるエラーです。
|
||||
|
||||
[timeout](../promise/timeout.md)や[withTimeout](../promise/withTimeout.md)のような操作の制限時間が過ぎたときに投げられます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
class TimeoutError extends Error {
|
||||
name = 'TimeoutError',
|
||||
}
|
||||
```
|
47
docs/ja/reference/function/after.md
Normal file
47
docs/ja/reference/function/after.md
Normal file
@ -0,0 +1,47 @@
|
||||
# after
|
||||
|
||||
`n`回目の呼び出しから実行される関数を生成します。
|
||||
提供された関数は`n`回目の呼び出しから実行されます。
|
||||
|
||||
これは、特定の回数の呼び出し後にのみ動作が発生する必要があるイベントや非同期タスクに有用です。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function after<F extends (...args: any[]) => any>(n: number, func: F): F;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `n` (`number`): `func`が実行されるために必要な呼び出し回数です。
|
||||
- `func` (`F`): 実行される関数です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`F`): 新しい関数を返します。この関数は以下の機能を持ちます:
|
||||
|
||||
- 呼び出された回数を追跡します。
|
||||
- `n`回目の呼び出しから`func`を呼び出します。
|
||||
- 呼び出しが`n`回に達するまで`undefined`を返します。
|
||||
|
||||
### エラー
|
||||
|
||||
`n`が負の場合、エラーを発生させます。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { after } from 'es-toolkit/function';
|
||||
|
||||
const mockFn = () => {
|
||||
console.log('実行されました');
|
||||
};
|
||||
const afterFn = after(3, mockFn);
|
||||
|
||||
// 何もログに出力しません
|
||||
afterFn();
|
||||
// 何もログに出力しません
|
||||
afterFn();
|
||||
// '実行されました'をログに出力します
|
||||
afterFn();
|
||||
```
|
34
docs/ja/reference/function/ary.md
Normal file
34
docs/ja/reference/function/ary.md
Normal file
@ -0,0 +1,34 @@
|
||||
# ary
|
||||
|
||||
最大`n`個までの引数を受け取る新しい関数を作成します。それ以上の引数は無視されます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function ary<F extends (...args: any[]) => any>(func: F, n: number): (...args: any[]) => ReturnType<F>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `func` (`F`): 引数の受け取りを制限する関数。
|
||||
- `n` (`number`, オプション): 受け取る引数の最大数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`(...args: any[]) => ReturnType<F>`): 受け取れる引数の数が制限された関数。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { ary } from 'es-toolkit/function';
|
||||
|
||||
function fn(a, b, c) {
|
||||
console.log(arguments);
|
||||
}
|
||||
|
||||
ary(fn, 2)(1, 2, 3); // [Arguments] { '0': 1, '1': 2 }
|
||||
ary(fn); // [Arguments] { '0': 1, '1': 2, '2': 3 }
|
||||
ary(fn, -1); // [Arguments] {}
|
||||
ary(fn, 1.5); // [Arguments] { '0': 1 }
|
||||
ary(fn, 2, {}); // [Arguments] { '0': 1, '1': 2, '2': 3 }
|
||||
```
|
46
docs/ja/reference/function/before.md
Normal file
46
docs/ja/reference/function/before.md
Normal file
@ -0,0 +1,46 @@
|
||||
# before
|
||||
|
||||
指定された関数(`func`)の呼び出し回数を制限する新しい関数を生成します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function before<F extends (...args: any[]) => any>(n: number, func: F): F;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `n` (`number`): 返される関数が `func` を呼び出すまでに許可される呼び出し回数です。
|
||||
- `n` が 0 の場合、`func` は呼び出されません。
|
||||
- `n` が正の整数の場合、`func` は最大 `n-1` 回呼び出されます。
|
||||
- `func` (`F`): 呼び出し回数制限が適用される関数です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`F`): 新しい関数を返します。この関数は以下の機能を持ちます:
|
||||
|
||||
- 呼び出し回数を追跡します。
|
||||
- `n-1` 回目の呼び出しまで `func` を呼び出します。
|
||||
- 呼び出し回数が `n` に達するか超えると、`undefined` を返して関数呼び出しを停止します。
|
||||
|
||||
### エラー
|
||||
|
||||
`n` が負の数の場合、エラーが発生します。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { after } from 'es-toolkit/function';
|
||||
|
||||
const mockFn = () => {
|
||||
console.log('実行されました');
|
||||
};
|
||||
const afterFn = after(3, mockFn);
|
||||
|
||||
// 何もログに出力されません
|
||||
afterFn();
|
||||
// 何もログに出力されません
|
||||
afterFn();
|
||||
// '実行されました' がログに出力されます
|
||||
afterFn();
|
||||
```
|
62
docs/ja/reference/function/debounce.md
Normal file
62
docs/ja/reference/function/debounce.md
Normal file
@ -0,0 +1,62 @@
|
||||
# debounce
|
||||
|
||||
提供された関数の呼び出しを遅延させるデバウンスされた関数を生成します。
|
||||
デバウンスされた関数は、最後に呼び出されてから `debounceMs` ミリ秒が経過した後に呼び出されます。
|
||||
デバウンスされた関数は、保留中の実行をキャンセルする `cancel` メソッドも持っています。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function debounce<F extends (...args: any[]) => void>(
|
||||
func: F,
|
||||
debounceMs: number,
|
||||
options?: DebounceOptions
|
||||
): F & { cancel: () => void };
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `func` (`F`): デバウンスされた関数を作成する関数。
|
||||
- `debounceMs`(`number`): デバウンスで遅延させるミリ秒。
|
||||
- `options` (`DebounceOptions`, オプション): オプションオブジェクト。
|
||||
- `signal` (`AbortSignal`, オプション): デバウンスされた関数をキャンセルするためのオプションの `AbortSignal`。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`F & { cancel: () => void }`): `cancel` メソッドを持つデバウンスされた関数。
|
||||
|
||||
## 例
|
||||
|
||||
### 基本的な使用法
|
||||
|
||||
```typescript
|
||||
const debouncedFunction = debounce(() => {
|
||||
console.log('実行されました');
|
||||
}, 1000);
|
||||
|
||||
// 1秒以内に再度呼び出されなければ、'実行されました'をログに記録します
|
||||
debouncedFunction();
|
||||
|
||||
// 前回の呼び出しがキャンセルされたため、何もログに記録しません
|
||||
debouncedFunction.cancel();
|
||||
```
|
||||
|
||||
### AbortSignalの使用法
|
||||
|
||||
```typescript
|
||||
const controller = new AbortController();
|
||||
const signal = controller.signal;
|
||||
const debouncedWithSignalFunction = debounce(
|
||||
() => {
|
||||
console.log('関数が実行されました');
|
||||
},
|
||||
1000,
|
||||
{ signal }
|
||||
);
|
||||
|
||||
// 1秒以内に再度呼び出されなければ、'関数が実行されました'をログに記録します
|
||||
debouncedWithSignalFunction();
|
||||
|
||||
// デバウンス関数の呼び出しをキャンセルします
|
||||
controller.abort();
|
||||
```
|
89
docs/ja/reference/function/memoize.md
Normal file
89
docs/ja/reference/function/memoize.md
Normal file
@ -0,0 +1,89 @@
|
||||
# memoize
|
||||
|
||||
計算結果をキャッシュする新しいメモ化された関数を返します。メモ化された関数は、同じ引数に対して重複して計算せず、キャッシュされた結果を返します。
|
||||
|
||||
引数を0個または1個だけ受け取る関数のみメモ化できます。2つ以上の引数を受け取る関数をメモ化するには、
|
||||
複数の引数を1つのオブジェクトや配列として受け取るようにリファクタリングしてください。
|
||||
|
||||
引数が配列やオブジェクトで、プリミティブ値でない場合、正しくキャッシュキーを計算できるように`getCacheKey`関数をオプションとして提供してください。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function memoize<F extends (...args: any) => any>(
|
||||
fn: F,
|
||||
options: {
|
||||
cache?: MemoizeCache<any, ReturnType<F>>;
|
||||
getCacheKey?: (args: Parameters<F>[0]) => unknown;
|
||||
} = {}
|
||||
): F & { cache: MemoizeCache<any, ReturnType<F>> };
|
||||
|
||||
interface MemoizeCache<K, V> {
|
||||
set(key: K, value: V): void;
|
||||
get(key: K): V | undefined;
|
||||
has(key: K): boolean;
|
||||
delete(key: K): boolean | void;
|
||||
clear(): void;
|
||||
size: number;
|
||||
}
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `fn` (`F`) - メモ化する関数。0個または1個の引数を受け取る必要があります。
|
||||
- `options`: メモ化オプション。
|
||||
- `options.cache` (`MemoizeCache<any, ReturnType<F>>`): 計算結果を保存するキャッシュオブジェクト。デフォルト値は新しい`Map`です。
|
||||
- `options.getCacheKey` (`(args: A) => unknown`): プリミティブ値でない引数に対してキャッシュキーを正しく計算できる関数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`F & { cache: MemoizeCache<any, ReturnType<F>> }`): メモ化された関数。さらに内部キャッシュを公開する`cache`プロパティを持ちます。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { memoize, MemoizeCache } from 'es-toolkit/function';
|
||||
|
||||
// 基本的な使用法
|
||||
const add = (x: number) => x + 10;
|
||||
const memoizedAdd = memoize(add);
|
||||
|
||||
console.log(memoizedAdd(5)); // 15
|
||||
console.log(memoizedAdd(5)); // 15 (キャッシュされた結果)
|
||||
console.log(memoizedAdd.cache.size); // 1
|
||||
|
||||
// カスタム`getCacheKey`の定義
|
||||
const sum = (arr: number[]) => arr.reduce((x, y) => x + y, 0);
|
||||
const memoizedSum = memoize(sum, { getCacheKey: (arr: number[]) => arr.join(',') });
|
||||
console.log(memoizedSum([1, 2])); // 3
|
||||
console.log(memoizedSum([1, 2])); // 3 (キャッシュされた結果)
|
||||
console.log(memoizedSum.cache.size); // 1
|
||||
|
||||
// カスタム`MemoizeCache`の定義
|
||||
class CustomCache<K, T> implements MemoizeCache<K, T> {
|
||||
private cache = new Map<K, T>();
|
||||
set(key: K, value: T): void {
|
||||
this.cache.set(key, value);
|
||||
}
|
||||
get(key: K): T | undefined {
|
||||
return this.cache.get(key);
|
||||
}
|
||||
has(key: K): boolean {
|
||||
return this.cache.has(key);
|
||||
}
|
||||
delete(key: K): boolean {
|
||||
return this.cache.delete(key);
|
||||
}
|
||||
clear(): void {
|
||||
this.cache.clear();
|
||||
}
|
||||
get size(): number {
|
||||
return this.cache.size;
|
||||
}
|
||||
}
|
||||
const customCache = new CustomCache<string, number>();
|
||||
const memoizedSumWithCustomCache = memoize(sum, { cache: customCache });
|
||||
console.log(memoizedSumWithCustomCache([1, 2])); // 3
|
||||
console.log(memoizedSumWithCustomCache([1, 2])); // 3 (キャッシュされた結果)
|
||||
console.log(memoizedAddWithCustomCache.cache.size); // 1
|
||||
```
|
26
docs/ja/reference/function/negate.md
Normal file
26
docs/ja/reference/function/negate.md
Normal file
@ -0,0 +1,26 @@
|
||||
# negate
|
||||
|
||||
真偽を返す関数 `func` の実行結果を反対に変更します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function negate<F extends (...args: never[]) => boolean>(func: F): F;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `func` (`F extends (args: ...Parameters) => unknown`): 戻り値を反対に変更する関数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
- (`F`): 戻り値が反対に変更された関数。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { negate } from 'es-toolkit/function';
|
||||
|
||||
negate(() => true)(); // 'false' を返す
|
||||
negate(() => false)(); // 'true' を返す
|
||||
```
|
28
docs/ja/reference/function/noop.md
Normal file
28
docs/ja/reference/function/noop.md
Normal file
@ -0,0 +1,28 @@
|
||||
# noop
|
||||
|
||||
何もしない関数です。関数が必要な場所で空欄を埋めるために使用したり、デフォルト値として使用したりできます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function noop(): void;
|
||||
```
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`void`): この関数は何も返しません。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { noop } from 'es-toolkit/function';
|
||||
|
||||
interface Props {
|
||||
onChange?: () => void;
|
||||
}
|
||||
|
||||
function MyComponent({ onChange = noop }: Props) {
|
||||
// ここでonChangeはundefinedにならないので、自由に呼び出せます。
|
||||
onChange();
|
||||
}
|
||||
```
|
30
docs/ja/reference/function/once.md
Normal file
30
docs/ja/reference/function/once.md
Normal file
@ -0,0 +1,30 @@
|
||||
# once
|
||||
|
||||
提供された関数 `func` を一度だけ呼び出すように制限する関数を生成します。
|
||||
関数を繰り返し呼び出すと、最初の呼び出しの値を返します。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function once<F extends () => any>(func: F): F;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `func` (`F extends () => any`): 一度だけ呼び出すように制限する関数です。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`F`): `func` が一度呼び出されると結果をキャッシュして返す新しい関数です。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const initialize = once(() => {
|
||||
console.log('初期化');
|
||||
return true;
|
||||
});
|
||||
|
||||
initialize(); // '初期化'をログに出力し、trueを返します
|
||||
initialize(); // ログ出力なしでtrueを返します
|
||||
```
|
47
docs/ja/reference/function/partial.md
Normal file
47
docs/ja/reference/function/partial.md
Normal file
@ -0,0 +1,47 @@
|
||||
# partial
|
||||
|
||||
引数を前もって提供した関数を作成します。
|
||||
|
||||
[bind](../compat/function/bind.md)と動作が似ていますが、`this`を固定しないという違いがあります。
|
||||
|
||||
Symbol型の`partial.placeholder`を使用すると、前もって提供した引数が使用される位置を決定できます。
|
||||
|
||||
関数の`length`プロパティは設定しません。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function partial<F extends (...args: any[]) => any>(func: F, ...partialArgs: any[]): F;
|
||||
|
||||
namespace partial {
|
||||
placeholder: symbol;
|
||||
}
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `func` (`F`): 前もって引数を提供する関数。
|
||||
- `partialArgs` (`any[]`, オプション): 前もって提供される引数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`F`): 前もって引数が提供された関数。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { partial } from 'es-toolkit/function';
|
||||
|
||||
function greet(greeting, name) {
|
||||
return greeting + ' ' + name;
|
||||
}
|
||||
|
||||
const sayHelloTo = partial(greet, 'hello');
|
||||
sayHelloTo('fred');
|
||||
// => 'hello fred'
|
||||
|
||||
// プレースホルダーを使用して部分適用
|
||||
const greetFred = partial(greet, partial.placeholder, 'fred');
|
||||
greetFred('hi');
|
||||
// => 'hi fred'
|
||||
```
|
47
docs/ja/reference/function/partialRight.md
Normal file
47
docs/ja/reference/function/partialRight.md
Normal file
@ -0,0 +1,47 @@
|
||||
# partialRight
|
||||
|
||||
引数を後ろから事前に提供した関数を作成します。
|
||||
|
||||
[partial](./partial.md)と動作が似ていますが、引数を後ろから提供するという違いがあります。
|
||||
|
||||
Symbol型の`partialRight.placeholder`を使用すると、事前に提供した引数が使用される位置を決定できます。
|
||||
|
||||
関数の`length`プロパティは設定しません。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function partialRight<F extends (...args: any[] => any)>(func: F, ...partialArgs: any[]): F;
|
||||
|
||||
namespace partialRight {
|
||||
placeholder: symbol;
|
||||
}
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `func` (`F`): 事前に引数を提供する関数。
|
||||
- `partialArgs` (`any[]`, オプション): 事前に提供される引数。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`F`): 事前に引数が提供された関数。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { partialRight } from 'es-toolkit/function';
|
||||
|
||||
function greet(greeting, name) {
|
||||
return greeting + ' ' + name;
|
||||
}
|
||||
|
||||
const greetFred = partialRight(greet, 'fred');
|
||||
greetFred('hi');
|
||||
// => 'hi fred'
|
||||
|
||||
// プレースホルダーを使用して部分適用
|
||||
const sayHelloTo = partialRight(greet, 'hello', partialRight.placeholder);
|
||||
sayHelloTo('fred');
|
||||
// => 'hello fred'
|
||||
```
|
38
docs/ja/reference/function/rest.md
Normal file
38
docs/ja/reference/function/rest.md
Normal file
@ -0,0 +1,38 @@
|
||||
# rest
|
||||
|
||||
与えられた関数 `func` に対して、特定のインデックスから引数を配列にまとめて渡す新しい関数を作成します。
|
||||
特定のインデックス以前の引数は個別に渡され、それ以降の引数は配列として一括で渡されます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function rest<F extends (...args: any[]) => any>(func: F, startIndex: number): (...args: any[]) => ReturnType<F>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `func` (`F`): 引数の受け取り方を変更する関数。
|
||||
- `startIndex` (`number`, オプション): 引数をまとめて渡し始めるインデックス。デフォルト値は `func.length - 1` で、最後のパラメータから配列にまとめて渡します。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`(...args: any[]) => ReturnType<F>`): 特定のインデックスからの引数を配列にまとめて `func` に渡す新しい関数。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
function fn(a, b, c) {
|
||||
return Array.from(arguments);
|
||||
}
|
||||
|
||||
// デフォルトでは最後の引数から配列にまとめて渡します
|
||||
const func1 = rest(fn);
|
||||
console.log(func1(1, 2, 3, 4)); // [1, 2, [3, 4]]
|
||||
|
||||
// 2番目の引数から配列にまとめて渡します
|
||||
const func2 = rest(fn, 1);
|
||||
console.log(func2(1, 2, 3, 4)); // [1, [2, 3, 4]]
|
||||
|
||||
// 引数が不足している場合
|
||||
console.log(func1(1)); // [1, undefined, []]
|
||||
```
|
37
docs/ja/reference/function/throttle.md
Normal file
37
docs/ja/reference/function/throttle.md
Normal file
@ -0,0 +1,37 @@
|
||||
# throttle
|
||||
|
||||
提供された関数を `throttleMs` ミリ秒ごとに最大1回だけ呼び出すスロットル化された関数を生成します。時間内にスロットル化された関数を再度呼び出しても、元の関数は実行されません。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function throttle<F extends (...args: any[]) => void>(func: F, throttleMs: number): F;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `func` (`F`): スロットル化する関数。
|
||||
- `throttleMs`(`number`): 実行をスロットル化するミリ秒。
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`F`): 新しいスロットル化された関数。
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
const throttledFunction = throttle(() => {
|
||||
console.log('呼び出し');
|
||||
}, 1000);
|
||||
|
||||
// すぐに '呼び出し' をログに記録します
|
||||
throttledFunction();
|
||||
|
||||
// スロットル時間内なので何もログに記録しません
|
||||
throttledFunction();
|
||||
|
||||
// 1秒後
|
||||
setTimeout(() => {
|
||||
throttledFunction(); // '呼び出し' をログに記録します
|
||||
}, 1000);
|
||||
```
|
29
docs/ja/reference/function/unary.md
Normal file
29
docs/ja/reference/function/unary.md
Normal file
@ -0,0 +1,29 @@
|
||||
# unary
|
||||
|
||||
最大1つの引数だけを受け取る新しい関数を作成します。それ以上の引数は無視されます。
|
||||
|
||||
## インターフェース
|
||||
|
||||
```typescript
|
||||
function unary<F extends (...args: any[]) => any>(func: F): (...args: any[]) => ReturnType<F>;
|
||||
```
|
||||
|
||||
### パラメータ
|
||||
|
||||
- `func` (`F`): 引数を1つだけ受け取るようにする関数
|
||||
|
||||
### 戻り値
|
||||
|
||||
(`(...args: any[]) => ReturnType<F>`): 最大1つの引数だけを受け取るようにした関数
|
||||
|
||||
## 例
|
||||
|
||||
```typescript
|
||||
import { unary } from 'es-toolkit/function';
|
||||
|
||||
function fn(a, b, c) {
|
||||
console.log(arguments);
|
||||
}
|
||||
|
||||
unary(fn)(1, 2, 3); // [Arguments] { '0': 1 }
|
||||
```
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user