20180909_ARTS_week11

Posted on 2018-09-09 in ARTS by yucongchen

第十一周,算法题 Integer to Roman,看了一篇讲 ES6 class 的文章,介绍了 ES6 中 for-of 循环,分享了关于看书看文档的一些想法。

Algorithm

/**
 * Integer to Roman
 * https://leetcode.com/problems/integer-to-roman/description/
 * 
 * @param {number} num
 * @return {string}
 */
var intToRoma = function (num) {

    var romaDict = {
        "M":1000,
        "CM":900,
        "D":500,
        "CD":400,
        "C":100,
        "XC":90,
        "L":50,
        "XL":40,
        "X":10,
        "IX":9,
        "V":5,
        "IV":4,
        "I":1
    }

    var rs = "";
    for (var k of Object.keys(romaDict)) {
        var v = romaDict[k]

        var repeat = parseInt(num/v)

        for (var i=0; i<repeat; i+=1) {
            rs += k;  // 有 repeat 个字母
        }
        num = num % v
    }

    return rs;   
}

console.log(intToRoma(3))
console.log(intToRoma(4))
console.log(intToRoma(9))
console.log(intToRoma(58))
console.log(intToRoma(1994))

数字转罗马字符,思路比较简单,罗马字符都是固定的,做个表存下来,然后从大到小用除法就能知道每个字符有多少个了。

Review

JavaScript ES6: Classes

https://medium.com/@luke_smaki/javascript-es6-classes-8a34b0a6720a

文章介绍了 ES6 中 class 的用法,包括构造函数 constructor,成员函数,静态函数,getter,setter 以及继承相关的东西,写的还是比较简明易懂的,推荐。

Tip

介绍一下 es6 的 for-of 循环。

es6 加入了一种新的循环方式 for-of,基本语法是:

for (let value of myArray) {
  console.log(value);
}

与 forEach 不同的是,for-of 是可以支持 break, continue 和 return 的。

与 for-in 不同的是,for-of 不能直接遍历对象属性,而 for-in 在这方面就比较擅长了。

for (let key of Object.keys(someObject)) {
    ...
}

for (let key in someObject) {
    ...
}

基本上,对象遍历可以用 for-in,其它遍历可以用 for-of

Share

分享一本小书 -- 《阅读 是一座随身携带的避难所》

最开始知道这本书是因为安姐推荐的,书名很有意思,作者是英国著名小说家毛姆。

书中说到了一个特别有意思的东西,叫『跳读』。因为种种原因,作者很可能在写作的时候加入一些和中心关系不大的内容以此来凑字数,所以读者要锻炼一种跳读的能力,可以忽略一些细枝末节直达书的主题。

这个说法让我有点恍然大悟,经常在阅读技术书籍的时候,喜欢逐行逐句逐节逐章的看,即使是一些同类型的技术书,比如都是讲 Python 的,也会把书中的基础内容也看一看,怕错过某些这本书讲了而别的书没讲的知识点。

想起以前公司一个技术牛人,当时一个项目要用到 WPF/WCF 这类技术,他就买了几本相关书回来,过了几天,我看书还是挺新的就问他这个看了吗,他说看完了,我说这个很新啊,才几天这就看完了。他淡淡的回了句:『我已经把感兴趣的,或者说需要看的给看了』。

跳读大抵也是如此吧。

由此也想到,特别要小心一些技术书籍或者设计相关的书籍,请了一大堆人写推荐语,书中大段大段的代码占位,看着很厚,其实超出文档的实质性内容不多,甚至就是官方文档的照搬和在加工。技术人提高甄别能力很重要,别看有一堆人写推荐语就是好。

这里也说到官方文档,记得耗子哥说过,学习一个东西,最开始就应该通读一遍文档,知道这个东西的全貌是怎么样的,能做什么事情。

学编程语言也是,什么从入门到精通这类数可以少看点,反而是应该好好看一遍文档,因为文档才是这门编程语言作者最想说的东西,也是你最应该知道的东西。


碎碎念

记录一些所思所想,写写科技与人文,写写生活状态,写写读书心得,主要是扯淡和感悟。 欢迎关注,交流。

微信公众号:程序员的诗和远方

公众号ID : MonkeyCoder-Life

程序员的诗和远方