@ -3,19 +3,19 @@ title: takeWhile
|
|||||||
tags: array,intermediate
|
tags: array,intermediate
|
||||||
---
|
---
|
||||||
|
|
||||||
Removes elements in an array until the passed function returns `true`.
|
Removes elements in an array until the passed function returns `false`.
|
||||||
Returns the removed elements.
|
Returns the removed elements.
|
||||||
|
|
||||||
- Loop through the array, using a `for...of` loop over `Array.prototype.entries()` until the returned value from the function is `true`.
|
- Loop through the array, using a `for...of` loop over `Array.prototype.entries()` until the returned value from the function is `false`.
|
||||||
- Return the removed elements, using `Array.prototype.slice()`.
|
- Return the removed elements, using `Array.prototype.slice()`.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const takeWhile = (arr, func) => {
|
const takeWhile = (arr, func) => {
|
||||||
for (const [i, val] of arr.entries()) if (func(val)) return arr.slice(0, i);
|
for (const [i, val] of arr.entries()) if (!func(val)) return arr.slice(0, i);
|
||||||
return arr;
|
return arr;
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
```js
|
```js
|
||||||
takeWhile([1, 2, 3, 4], n => n >= 3); // [1, 2]
|
takeWhile([1, 2, 3, 4], n => n < 3); // [1, 2]
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user