20180811_ARTS_week07

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

内容简介:这个思路是转成字符串,然后再倒序再转回来。下面这个思路是每次对 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


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

查看所有标签

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

Algorithms in Java, Part 5

Algorithms in Java, Part 5

Robert Sedgewick / Addison-Wesley Professional / 2003-7-25 / USD 54.99

Algorithms in Java, Third Edition, Part 5: Graph Algorithms is the second book in Sedgewick's thoroughly revised and rewritten series. The first book, Parts 1-4, addresses fundamental algorithms, data......一起来看看 《Algorithms in Java, Part 5》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

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

在线 XML 格式化压缩工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具