基础实验2总结

在基础实验2中,我们初步学习了使用JavaScript实现算法与功能。 虽然没有将JavaScript与前端开发结合起来,但是仅仅是纯使用JavaScript也已经让我 感受到了JavaScript的魅力与迷惑神奇。通过这次练习,得到的不仅仅是对JavaScript 的了解,找到了比较好的开发与调试工具还是令我比较欣喜的一点。

编辑器

在编辑器上,首推的就是Visual Studio Code,最令我感到方便的就是它的自动补全与提示功能。 对于像我这种之前完全没有接触过JavaScript的小白来说,自动补全有着巨大的帮助,它不仅可以 让我知道一个对象可以有什么方法,也可以提示出这些方法叫什么名字。在书写代码的过程中,经常 会对一个系统对象感兴趣然后把它的各种方法都跑一遍。

除了VScode之外,发现在线平台上的JS Bin也非常好用,它的方便之处在于可以实时更新,并且 JavaScript,css,html,console和output并列在一起,可以很方便的在线编辑与切换,在编写 小型测试样例尤其是测试各种功能的正确性的时候非常有帮助。

基础实验题目

DDL

这道题目刚看到的时候感觉无从下手,但是后来发现主要是对JavaScript的各种对象都不熟悉, 其实JavaScript内置了Date对象,是专门用来处理时间的,使用了Date对象之后,只需少量的代码 就可以处理时间对象与相差的天数,而不必自己判断与编写年月日的差,使用起来非常的方便。

另一方面,对于对象的排序,在sort函数内部自定义的compare方法也可以是非常的灵活,唯一需要注意的一点是 它默认是使用字符编码来排序的,即使传入的是数字也会先转换成字符串再进行排序

Tree

实现多叉树的先序遍历,在这道题中,提示了使用yield和generator会有所帮助。但是在实际 操作中,先序遍历也可以直接使用递归进行计算,在构造函数中预先进行先序遍历结束后再写入has_next 方法能够避免使用generator。

使用generator的yield:通过对yield特性的资料查询,个人感觉yield和递归的感觉比较相似, 只不过多出了yield*的属性,在使用next()方法的时候,遇到yield*函数的时候会不停的向下走直到遇到第一个 yield之后返回yield的值。

数组加倍

这道题和上一道题的解法非常类似,使用一个递归函数只要判断类型不是数字就继续向下递归, 符合条件的直接用函数执行一下即可。

运算符

这道题我使用的是字符串匹配的方法,每次匹配到一个'x&y'类型的字符串就把它计算出来然后将计算结果 填回到字符串中继续处理,直到找不到x&y类型的串说明处理完了。这样做的条件是运算时是从左向右执行的。