if (!r) { r = []; }中,!r是怎么理解?

天崩地裂金刚不坏 2016-07-01 10:07:53
function flatten(a, r) {
if (!r) {
r = [];
}
for (var i = 0; i < a.length; i++) {
if (a[i].constructor == Array) {
flatten(a[i], r);
} else {
r.push(a[i]);
}
}
return r;
}
flatten([[1, 2],[3, 4, 5], [6, 7, 8, 9,[11,12,[12,13,[14]]]],10]);
// =>[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]
...全文
266 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cq-wangyong 2016-07-01
  • 打赏
  • 举报
回复
我心已碎。。。。。
  • 打赏
  • 举报
回复
谢谢你真棒。。
cq-wangyong 2016-07-01
  • 打赏
  • 举报
回复
if()else{} 其中的if语句是判断当前元素是否为一个数组,如果是继续调用本身,如果不是数组则将当前元素放入r数组中;例如:var s=[[1,2],3],执行的时候第一个元素是[1,2],判断是一个数组,调用本身把数组[1,2]档参数传进去,执行for循环,判断元素1,不是数组就会去执行else
  • 打赏
  • 举报
回复
引用 2 楼 baidu_31333625 的回复:
能不能解释下这个函数的意思。他重载那块。else那不太理解
递归的时候,到最后,会出现一个一维数组,然后执行else是吧
cq-wangyong 2016-07-01
  • 打赏
  • 举报
回复
还有个未定义也是false
cq-wangyong 2016-07-01
  • 打赏
  • 举报
回复
if()语句需要的是boolean类型的值,如果不是系统会自动转换,但是只有数字0,null和空字符串''这三个值在转换的时候会是false,其他的转换都是true;你这是想把数组转换为字符串的话直接用Array.join(',')这个方法;如果是想得到一维数组那就再调用字符串的Str.split(',')方法;例如:var array=[[1, 2],[3, 4, 5], [6, 7, 8, 9,[11,12,[12,13,[14]]]] ;var array2=array.join(',').split(',')
functionsub 2016-07-01
  • 打赏
  • 举报
回复
function flatten(a, r) {
    if (!r) {
        r = []; // 如果没有传入第二个参数就将r设置成[]
    }
    for (var i = 0; i < a.length; i++) {
        if (a[i].constructor == Array) {// 如果当前元素为数组,则递归调用本方法,将r当做第二个参数传进
            flatten(a[i], r);
        } else {
            r.push(a[i]);// 如果不是数组,直接推入r中
        }
    }
    return r;
}
这个函数就是把多维数组转换成一维数组。
  • 打赏
  • 举报
回复
能不能解释下这个函数的意思。他重载那块。else那不太理解
functionsub 2016-07-01
  • 打赏
  • 举报
回复
如果没传第二个参数,则将第二个参数直接设置成一个空数组。
内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制的应用。书提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书还涉及了执行器饱和、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束和系统动力学的情况下;②解决带有参数不确定性的线性和非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书提出的理论和技术。

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧