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


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

查看所有标签

猜你喜欢:

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

计算理论导引

计算理论导引

[美]Michael Sipser / 唐常杰、陈鹏、向勇、刘齐宏 / 机械工业出版社 / 2006-7 / 36.00元

本书是计算理论领域的经典著作,被国外多所大学选用为教材。本书以注重思路、深入引导为特色,系统地介绍计算理论的三大主要内容:自动机与语言、可计算性理论和计算复杂性理论。同时,对可计算性和计算复杂性理论中的某些高级内容作了重点讲解。全书通过启发性的问题、精彩的结果和待解决问题来引导读者挑战此领域中的高层次问题。新版的一大亮点是增加了更多习题、教辅资料和部分习题解答,更加有利于教学。 全书叙述由浅......一起来看看 《计算理论导引》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

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

HEX HSV 互换工具