mirror of
https://github.com/toss/es-toolkit.git
synced 2024-11-24 11:45:26 +03:00
feat(repeat): Add repeat (#459)
* bench: repeat * test: repeat * feat(repeat): Add repeat * docs: repeat * fix typo
This commit is contained in:
parent
53f5b698b9
commit
e48c313d96
13
benchmarks/performance/repeat.bench.ts
Normal file
13
benchmarks/performance/repeat.bench.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import { bench, describe } from 'vitest';
|
||||||
|
import { repeat as repeatToolkit } from 'es-toolkit/compat';
|
||||||
|
import { repeat as repeatLodash } from 'lodash';
|
||||||
|
|
||||||
|
describe('repeat', () => {
|
||||||
|
bench('es-toolkit/repeat', () => {
|
||||||
|
repeatToolkit('abc', 2);
|
||||||
|
});
|
||||||
|
|
||||||
|
bench('lodash/repeat', () => {
|
||||||
|
repeatLodash('abc', 2);
|
||||||
|
});
|
||||||
|
});
|
@ -335,7 +335,7 @@ Even if a feature is marked "in review," it might already be under review to ens
|
|||||||
| [padEnd](https://lodash.com/docs/4.17.15#padEnd) | ❌ |
|
| [padEnd](https://lodash.com/docs/4.17.15#padEnd) | ❌ |
|
||||||
| [padStart](https://lodash.com/docs/4.17.15#padStart) | ❌ |
|
| [padStart](https://lodash.com/docs/4.17.15#padStart) | ❌ |
|
||||||
| [parseInt](https://lodash.com/docs/4.17.15#parseInt) | ❌ |
|
| [parseInt](https://lodash.com/docs/4.17.15#parseInt) | ❌ |
|
||||||
| [repeat](https://lodash.com/docs/4.17.15#repeat) | ❌ |
|
| [repeat](https://lodash.com/docs/4.17.15#repeat) | ✅ |
|
||||||
| [replace](https://lodash.com/docs/4.17.15#replace) | ❌ |
|
| [replace](https://lodash.com/docs/4.17.15#replace) | ❌ |
|
||||||
| [snakeCase](https://lodash.com/docs/4.17.15#snakeCase) | 📝 |
|
| [snakeCase](https://lodash.com/docs/4.17.15#snakeCase) | 📝 |
|
||||||
| [split](https://lodash.com/docs/4.17.15#split) | ❌ |
|
| [split](https://lodash.com/docs/4.17.15#split) | ❌ |
|
||||||
|
33
docs/ko/reference/compat/string/repeat.md
Normal file
33
docs/ko/reference/compat/string/repeat.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# repeat
|
||||||
|
|
||||||
|
::: info
|
||||||
|
이 함수는 호환성을 위한 `es-toolkit/compat` 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.
|
||||||
|
|
||||||
|
`es-toolkit/compat`에서 이 함수를 가져오면, [lodash와 완전히 똑같이 동작](../../../compatibility.md)해요.
|
||||||
|
:::
|
||||||
|
|
||||||
|
주어진 문자열을 주어진 횟수만큼 반복한 뒤에 리턴해요.
|
||||||
|
|
||||||
|
만약, 문자열이 없거나 횟수가 0인 경우에는 내용물이 없는 문자열을 리턴해요.
|
||||||
|
|
||||||
|
## 인터페이스
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
function repeat(str: string, n: number): string
|
||||||
|
```
|
||||||
|
|
||||||
|
## 파라미터
|
||||||
|
|
||||||
|
- `str` (`string`): 반복할 문자열.
|
||||||
|
- `n` (`number`): 반복하시고 싶은 횟수.
|
||||||
|
|
||||||
|
## 반환 값
|
||||||
|
|
||||||
|
주어진 문자열이 n번째 반복된 문자열.
|
||||||
|
|
||||||
|
## 예시 값
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
repeat('abc', 0); // ''
|
||||||
|
repeat('abc', 2); // 'abcabc'
|
||||||
|
```
|
33
docs/reference/compat/string/repeat.md
Normal file
33
docs/reference/compat/string/repeat.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# repeat
|
||||||
|
|
||||||
|
::: info
|
||||||
|
This function is only available in `es-toolkit/compat` for compatibility reasons. It either has alternative native JavaScript APIs or isn’t fully optimized yet.
|
||||||
|
|
||||||
|
When imported from `es-toolkit/compat`, it behaves exactly like lodash and provides the same functionalities, as detailed [here](../../../compatibility.md).
|
||||||
|
:::
|
||||||
|
|
||||||
|
It returns the given string repeated a specified number of times.
|
||||||
|
|
||||||
|
If the string is empty or the count is 0, it returns an empty string.
|
||||||
|
|
||||||
|
|
||||||
|
## Signature
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
function repeat(str: string, n: number): string
|
||||||
|
```
|
||||||
|
## Parameters
|
||||||
|
|
||||||
|
- `str` (`string`): The string to repeat.
|
||||||
|
- `n` (`number`): The number of times you want to repeat.
|
||||||
|
|
||||||
|
## Returns
|
||||||
|
|
||||||
|
The string repeated for the nth time.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
repeat('abc', 0); // ''
|
||||||
|
repeat('abc', 2); // 'abcabc'
|
||||||
|
```
|
@ -72,6 +72,7 @@ export { startsWith } from './string/startsWith.ts';
|
|||||||
export { endsWith } from './string/endsWith.ts';
|
export { endsWith } from './string/endsWith.ts';
|
||||||
export { padStart } from './string/padStart.ts';
|
export { padStart } from './string/padStart.ts';
|
||||||
export { padEnd } from './string/padEnd.ts';
|
export { padEnd } from './string/padEnd.ts';
|
||||||
|
export { repeat } from './string/repeat.ts';
|
||||||
|
|
||||||
export { max } from './math/max.ts';
|
export { max } from './math/max.ts';
|
||||||
export { min } from './math/min.ts';
|
export { min } from './math/min.ts';
|
||||||
|
12
src/compat/string/repeat.spec.ts
Normal file
12
src/compat/string/repeat.spec.ts
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import { describe, it, expect } from 'vitest';
|
||||||
|
import { repeat } from './repeat';
|
||||||
|
|
||||||
|
describe('padStart', () => {
|
||||||
|
it('repeat abc 0', () => {
|
||||||
|
expect(repeat('abc', 0)).toBe('');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('repeat abc 3', () => {
|
||||||
|
expect(repeat('abc', 3)).toBe('abcabcabc');
|
||||||
|
});
|
||||||
|
});
|
14
src/compat/string/repeat.ts
Normal file
14
src/compat/string/repeat.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Repeats the given string n times.
|
||||||
|
*
|
||||||
|
* If n is less than 1, an empty string is returned, or if the string is an empty string,
|
||||||
|
* the original string is returned unchanged.
|
||||||
|
*
|
||||||
|
* @param {string} str - The string to repeat.
|
||||||
|
* @param n {number} - The number of times to repeat the string.
|
||||||
|
* @returns {string} - The repeated string, or an empty string if n is less than 1.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export function repeat(str: string, n: number): string {
|
||||||
|
return str.repeat(n);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user