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]
...全文
297 9 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
如果没传第二个参数,则将第二个参数直接设置成一个空数组。
同步电机与构网型变流器的频率稳定性研究(Simulink仿真、Matlab代码)内容概要:本文围绕“同步电机与构网型变流器的频率稳定性研究”展开,结合Simulink仿真与Matlab代码实现,深入探讨了同步电机与构网型变流器在电力系统频率稳定的动态交互机制。研究重点包括构网型变流器(Grid-Forming Inverter, GFM)如何模拟同步电机的惯量与阻尼特性,提升低惯量系统的稳定性,并通过仿真模型对比分析两者在频率响应、暂态稳定性及系统惯量支撑方面的性能差异。文提供了完整的建模仿真代码,涵盖控制策略设计、小信号建模、稳定性分析等内容,适用于科研复现与教学实践。; 适合人群:具备电力系统分析、自动控制理论基础,熟悉Matlab/Simulink仿真环境,从事新能源并网、电力电子与电网稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于理解构网型变流器如何替代或补充传统同步电机的频率调节功能;②支撑科研论文复现、课程项目设计或实际工程对高比例新能源系统稳定性的分析与优化;③掌握Simulink搭建电力系统动态模型与Matlab进行稳定性分析的核心方法。; 阅读建议:建议读者结合文提供的仿真模型与代码逐步操作,重点关注控制参数设置对系统稳定性的影响,同时参考相关文献深化对构网控制策略的理解,以实现从理论到仿真的完整闭环。
【复现】并_离网风光互补制氢合成氨系统容量-调度优化分析【Cplex求解】(Matlab代码实现)内容概要:本文围绕“并_离网风光互补制氢合成氨系统”的容量配置与调度优化问题展开研究,利用Cplex求解器在Matlab环境实现优化模型的构建与求解。研究整合风能、光伏等可再生能源,通过电解水制氢并进一步合成氨,形成绿色能源转化与储存路径。重点解决系统在并网与离网两种运行模式下的容量规划与运行调度协同优化问题,考虑风光出力不确定性、设备效率、能量平衡及经济性等多重约束,旨在提升系统能源利用率与经济性。文提供了完整的Matlab代码实现,便于科研人员复现和改进相关模型。; 适合人群:具备一定电力系统、可再生能源或优化建模背景的研究生、科研人员及工程技术人员,熟悉Matlab编程与数学优化方法者更佳。; 使用场景及目标:①用于风光储氢氨多能互补系统的容量规划与运行调度研究;②支撑科研论文复现、毕业课题设计或实际项目前期仿真分析;③掌握Cplex在能源系统优化的应用方法,提升复杂系统建模能力。; 阅读建议:建议结合文提供的Matlab代码与优化模型公式同步阅读,重点关注目标函数构建、约束条件设置及Cplex调用流程,可尝试修改参数或引入新约束进行扩展研究,以深化对多能系统协同优化的理解
内容概要:本文介绍了一个基于Python开发的“PDF产品彩页批量转换成图片并插入Word”的多线程工具,能够高效地将指定文件夹内的多个PDF文件批量转换为高清图像,并自动插入到一个Word文档,生成图文并茂的产品彩页合集。该工具采用PyMuPDF(fitz)、Pillow、python-docx等库实现PDF转图与文档生成,利用ThreadPoolExecutor实现智能多线程处理,根据CPU核心数和PDF数量动态分配线程,提升处理效率。界面使用Tkinter构建,支持选择PDF文件夹、设置输出路径、选择图像质量(标准/高/超清),并具备日志记录、进度条显示、错误提示等功能。转换后的Word文档无任何页码或页眉页脚干扰,包含自动生成的目录和处理摘要,图片自适应页面宽度,排版整洁美观。; 适合人群:具备一定Python编程基础的技术人员、办公自动化需求者、需要批量处理PDF与Word文档的企业用户或个体工作者;尤其适用于市场、设计、行政等岗位人员。; 使用场景及目标:①将多个产品手册PDF整合为一份可编辑的Word图文文档;②实现办公流程自动化,提高大批量文件处理效率;③避免手动截图粘贴的繁琐操作,确保输出格式统一、清晰无水印;④利用多线程技术缩短处理时间,提升用户体验。; 阅读建议:使用前需安装所需依赖库(PyMuPDF、Pillow、python-docx),建议在性能较好的设备上运行以充分发挥多线程优势;可通过修改源码进一步定制输出样式或增加功能(如水印添加、格式导出等),适合用于学习GUI编程、多线程应用及文档自动化处理的实践项目。

87,995

社区成员

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

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