20180811_ARTS_week07

栏目: 数据库 · 发布时间: 6年前

内容简介:这个思路是转成字符串,然后再倒序再转回来。下面这个思路是每次对 10 取余,然后对前一次的结果乘 10。

Algorithm

/**
 * Reverse Integer
 * @param {number} x
 * @return {number}
 */
var reverse = function (x) {
    var rs;
    if (x < 0) {
        rs = -(('' + x).slice(1).split('').reverse().join(''));
    } else {
        rs = +(('' + x).split('').reverse().join(''));
    }

    if (-Math.pow(2, 31) > rs || Math.pow(2, 31) - 1 < rs) {
        return 0;
    } else {
        return rs;
    }
};

console.log(reverse(123))   //321
console.log(reverse(-123))  //-321
console.log(reverse(120))   //21

这个思路是转成字符串,然后再倒序再转回来。

下面这个思路是每次对 10 取余,然后对前一次的结果乘 10。

var reverse = function (x) {
    let rs = 0;
    while (x !== 0) {
        rs = rs * 10 + x % 10;
        x = Math.trunc(x / 10);
    }

    return Math.abs(rs) >= 2147483648 ? 0 : rs;
};

Review

https://medium.freecodecamp.org/prototype-in-js-busted-5547ec68872

文章主要介绍了 JavaScript 中的 prototype,从原始类型讲起,到 Object 和 Function prototype 的关系。

Object instanceof Function
Object.__proto__.constructor === Function

Object instanceof Object
Object.__proto__.__proto__.constructor === Object

Function instanceof Function
Function.__proto__.constructor === Function

Function instanceof Object
Function.__proto__.__proto__.constructor === Object

可能是英语理解的关系,感觉讲的有点绕,不是特别清楚,个人推荐《JavaScript 面向对象编程指南》,讲的比较清楚。

Tip

介绍一下 JavaScript 做深拷贝的两种方式。

function deepCopy(obj) {
    let copy = {};

    // 如果是基本类型直接赋值,
    // 如果是数组则拷贝,
    // 其他对象则递归调用deepCopy方法
      Object.keys(obj).forEach(key => {

        if (obj[key] instanceof Array) {
          copy[key] = Array.from(obj[key]);
        }
        else if (typeof obj[key] === 'object') {
          copy[key] = deepCopy(obj[key]);
        }
        else {
          copy[key] = obj[key];
        }
      })

    return copy;
  }

  function deepCopy2(obj) {
    return JSON.parse(JSON.stringify(obj));
  }

deepCopy 函数是比较传统的深拷贝,信息会全部保留。 而 deepCopy2 是利用了 json 的序列化反序列化来做深拷贝,这种方式会把对象值是 function 的信息搞丢,在只是对一些数据做深拷贝的时候可以使用。

性能方面,当做拷贝的对象数据项比较少时,json 的方式会快很多,而当数据项比较多的时候,json 耗时明显增加,而第一种方式相对来讲增加的不多。

Share

这周读了二爷的专栏,其中有一篇讲『用最少的资源给你的产品试试水』。

想到组内上一年做的一个组内项目,大致是从已有的数据仓库拿数据然后做可视化给产品或者设计同学看。因为数据仓库一些接口的原因,速度非常慢,而且每个页面有很多需要人为配置的项目。做出来之后,几乎没有人用,但是老板也不叫停,最后变成了一个 KPI 项目。

调研有时候是不完全靠谱的,一些用户嘴上说好好好要要要,实际做出来,如果不是他们工作中流程需要的一环,或者解决了很大痛点并且用户体验好,可能用户用个一两次就丢在角落了。

所以用最少的资源(哪怕手工更新)先给产品试试水,很重要。

碎碎念

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

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

公众号ID : MonkeyCoder-Life

20180811_ARTS_week07


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数论概论

数论概论

希尔弗曼 / 孙智伟 / 机械工业出版社 / 2008-5 / 42.00元

《数论概论(原书第3版)》讲述了有关数论大量有趣的知识,以及数论的一般方法和应用,循序渐进地启发读者用数学方法思考问题,此外还介绍了目前数论研究的某些前沿课题。《数论概论(原书第3版)》采用轻松的写作风格,引领读者进入美妙的数论世界,不断激发读者的好奇心,并通过一些精心设计的练习来培养读者的探索精神与创新能力。一起来看看 《数论概论》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具