diff --git a/snippets/takeRightWhile.md b/snippets/takeRightWhile.md new file mode 100644 index 000000000..7a1d9c57b --- /dev/null +++ b/snippets/takeRightWhile.md @@ -0,0 +1,18 @@ +### takeRightWhile + +Removes elements from the end of an array until the passed function returns `true`. Returns the removed elements. + +Loop through the array, using a `for...of` loop over `Array.keys()` until the returned value from the function is `true`. +Return the removed elements, using `Array.reverse()` and `Array.slice()`. + +```js +const takeRightWhile = (arr, func) => { + for (let i of arr.reverse().keys()) + if (func(arr[i])) return arr.reverse().slice(arr.length - i,arr.length); + return arr; +}; +``` + +```js +takeRightWhile([1, 2, 3, 4], n => n < 3); // [3, 4] +``` diff --git a/snippets/takeWhile.md b/snippets/takeWhile.md new file mode 100644 index 000000000..38c32b81d --- /dev/null +++ b/snippets/takeWhile.md @@ -0,0 +1,18 @@ +### takeWhile + +Removes elements in an array until the passed function returns `true`. Returns the removed elements. + +Loop through the array, using a `for...of` loop over `Array.keys()` until the returned value from the function is `true`. +Return the removed elements, using `Array.slice()`. + +```js +const takeWhile = (arr, func) => { + for(let i of arr.keys()) + if (func(arr[i])) return arr.slice(0,i); + return arr; +}; +``` + +```js +takeWhile([1, 2, 3, 4], n => n >= 3); // [1, 2] +``` diff --git a/tag_database b/tag_database index e7a0921bd..c94034010 100644 --- a/tag_database +++ b/tag_database @@ -219,6 +219,8 @@ symmetricDifferenceWith:array,function tail:array take:array takeRight:array +takeRightWhile:array,function +takeWhile:array,function times:function timeTaken:utility toCamelCase:string,regexp