从数组末尾删除元素,直到传递的函数返回true。返回移除的元素。
...使用展开运算符 ( ) 和 Array.prototype.reverse() 创建数组的反向副本。
循环遍历反向副本,使用for...of循环Array.prototype.entries()直到函数返回的值是真为止。
使用 Array.prototype.slice() 返回删除的元素。
回调函数fn接受一个参数,该参数是元素的值。
const takeRightUntil = (arr, fn) => {
for (const [i, val] of [...arr].reverse().entries())
if (fn(val)) return i === 0 ? [] : arr.slice(-i);
return arr;
};
示例:
takeRightUntil([1,2,3,4],n=>n<3);// [3, 4]
更多内容请访问我的网站:https://www.icoderoad.com