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


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

查看所有标签

猜你喜欢:

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

Processing编程学习指南(原书第2版)

Processing编程学习指南(原书第2版)

[美]丹尼尔希夫曼(Daniel Shiffman) / 李存 / 机械工业出版社 / 2017-3-1 / 99.00元

在视觉化界面中学习电脑编程的基本原理! 本书介绍了编程的基本原理,涵盖了创建最前沿的图形应用程序(例如互动艺术、实时视频处理和数据可视化)所需要的基础知识。作为一本实验风格的手册,本书精心挑选了部分高级技术进行详尽解释,可以让图形和网页设计师、艺术家及平面设计师快速熟悉Processing编程环境。 从算法设计到数据可视化,从计算机视觉到3D图形,在有趣的互动视觉媒体和创意编程的背景之......一起来看看 《Processing编程学习指南(原书第2版)》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具