【发布时间】:2017-06-06 01:30:29
【问题描述】:
我正试图围绕递归函数式编程概念展开思考。
考虑以下场景(是的,我可以使用.length 来获取数组的长度):
https://jsfiddle.net/ur5gc397/
$(function(){
function arrLen(arr) {
var count = 0;
$.each(arr, function() {
count = count + 1;
});
return count;
}
var a = ["a", "b", "c", "d"];
var lengthOfA = arrLen(a);
})
我想改写一下,这样我就不会将变量 count 设置为 0,然后在每次遍历我的数组时改变值。我可以设置某种函数,递归调用自身,然后以正确的值从函数中返回吗?
【问题讨论】:
-
如果您不将
count设置为初始值,它将等于undefined。 -
var lengthOfA = a.reduce(count => count+1, 0); -
无论如何,如果不使用
length属性,就无法处理稀疏数组。 -
const length = arr => arr.shift() ? 1 + length(arr) : 0
标签: javascript recursion functional-programming