Jas*_*hte 3 javascript recursion join
我一直在努力实现一堆高阶函数.就是图个好玩儿.
但是今天,我发现自己仍然试图重现Array.join方法.
我已经为自己设置了一个挑战,不使用任何循环,例如,for或while尽可能少地使用if语句并减少使用的变量数量.
以下是我的尝试:
Array.prototype.implode = function(glue) {
return (function loop(arr, str) {
return (arr.length > 1
? loop(arr.slice(0, 1), str + arr[0] + (glue || ''))
: str);
})(this, '');
};
const arr = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log(arr.implode('#')); // a#Run Code Online (Sandbox Code Playgroud)
您应该开始处理递归函数的结束情况,而不是另一个.它更容易:)
但是,您应该从第二个元素切片到结尾,而不仅仅是第一个元素.
Array.prototype.implode = function (glue) {
return (function loop(array, glue) {
return (
array.length === 1
? array[0]
: array[0] + glue + loop(array.slice(1), glue)
)
})(this, glue || '')
}
const arr = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log(arr.implode('#'));
// a#b#c#d#e#fRun Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |