资讯专栏INFORMATION COLUMN

javascript有用的代码片段

PiscesYE / 2544人阅读

摘要:有用的代码片段小数取整按位运算符直接去掉小数,向下取整,返回的数小于等于原来的数。布尔值返回或,返回,数字直接返回,返回,对于字符串,将其转换为十进制数值,会忽略前面的进制除外,空字符串返回,浮点数会返回浮点数值。

JavaScript有用的代码片段 小数取整
const x = 1.234;
~~x    //1
x >>   //1
x | 0  //1
Math.floor(x)  //1

const y = -1.4;
x >>   //-1
Math.floor(y)   //-2
按位运算符直接去掉小数,Math.floor()向下取整,返回的数小于等于原来的数。
生成n位随机数
let getRandom = n => Math.random().toString().slice(-n);
getRandom(6)   //6位随机数
生成16进制颜色
let colorCode = "#" +("00000" +(Math .random()* 0x1000000 << 0).toString(16)).slice(- 6);
n到m间随机整数
let randomNum = (n,m) => Math.floor(Math.random()*(m-n) + n);
randomNum(2,10)   //2-10之间的整数
生成n到m间的随机整数,不包括m,n和m可以为负数。
驼峰命名转下划线
let humpToUnderline = str => str.match(/^[a-z][a-z0-9]+|[A-Z][a-z0-9]*/g).join("_").toLowerCase();
humpToUnderline("helloWorld");  //hello_world
url参数转json
let urlToJson = url => {
    let json = {};
    if (!!!url) return json;
    let data = url.split("?")[1] ? url.split("?")[1].split("&") : [];
    for(let i=0; i
获取url中的参数
let getUrlData = name => {
    let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    let r = window.location.search.substr(1).match(reg);
    if (r != null) return decodeURI(r[2]);
    return null;
}
n维数组转1维数组
let flatten = arr => JSON.parse(`[${JSON.stringify(arr).replace(/[|]/g, "")}]`);
let flatten = arr => arr.reduce((a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []);
let flatten = a => Array.isArray(a) ? [].concat(...a.map(flatten)) : a;

flatten([1,[2,3,[3,4],5])  //[1,2,3,4,5]
n维数组展开成字符串
let arr = [1,3,[4,[72,"a","d"],3,[6,"c"],d]];

arr+"";
arr.toString();
arr.join();
JSON.stringify(arr).replace(/[|]/g,"");

//"1,3,4,72,"a","d",3,6,"c""
时间格式化
//时间格式化
function format1(x, y) {
    let i = 0;
    var z = {
        y: x.getFullYear(),
        M: x.getMonth() + 1,
        d: x.getDate(),
        h: x.getHours(),
        m: x.getMinutes(),
        s: x.getSeconds()
    };
    return y.replace(/(y+|M+|d+|h+|m+|s+)/g, function(v) {
        console.log(++i);
        return ((v.length > 1 ? "0" : "") + eval("z." + v.slice(-1))).slice(-(v.length > 2 ? v.length : 2))
    });
}

format1(new Date(), "yyyy-MM-dd h:m:s");   //2018-01-22 9:38:10
统计文字个数
//统计文字个数
function wordCount(data) {
  var pattern = /[a-zA-Z0-9_u0392-u03c9]+|[u4E00-u9FFFu3400-u4dbfuf900-ufaffu3040-u309fuac00-ud7af]+/g;
  var m = data.match(pattern);
  var count = 0;
  if( m === null ) return count;
  for (var i = 0; i < m.length; i++) {
    if (m[i].charCodeAt(0) >= 0x4E00) {
      count += m[i].length;
    } else {
      count += 1;
    }
  }
  return count;
}

var text = "统计文字个数";
// console.log(wordCount(text)); // 6
格式化数字
//法一
function formatNum (str) {
    return str.replace(/B(?=(d{3})+(?!d))/g, ",");
}

//法二
function formatNum (str) {
    return str.split("").reverse().reduce((prev, next, index) => {
        return ((index % 3) ? next : (next + ",")) + prev
    })
}
检测质数
function isPrime(n) {
    return !(/^.?$|^(..+?)1+$/).test("1".repeat(n))
}
统计字符出现的次数
function strTimes (str) {
    return str.split("").reduce((p,n) => (p[n]++ || (p[n]=1) ,p), {});   
}    
评级
let grade = rate => "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);
字符串类型的数字转数字
let a = "1";
+a   //1;
+a 可以理解为Number(a),将一个变量转成数字。布尔值返回0或1,undefined返回NaN,数字直接返回,null返回0,对于字符串,将其转换为十进制数值,会忽略前面的0(16进制除外),空字符串返回0,浮点数会返回浮点数值。其他格式字符串(无论是否数字开头,返回NaN,字符串中好几个小数点,返回NaN
数组去重复
[...new Set(arr)]

更多更详细的数组去重方法。

获取时间戳
(new Date()).getTime();
(new Date).getTime();
new Date().getTime();
+new Date();
Date.now();

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107756.html

相关文章

  • 提高 JavaScript 开发效率高级 VSCode 扩展!

    摘要:使用高亮类似的扩展更强大的高亮扩展,具有更多功能。为了检查和检查响应,使用了之类的工具。在这里获取这两个扩展自动闭合标记和自动重命名标记。类似的扩展显示提交历史的精美图表等等。 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! Quokka.js Quokka.js 是一个用于 JavaScript 和 TypeScript 的实时运行代码平台。这意味着它会实时运行...

    zhigoo 评论0 收藏0
  • JavaScript 编程精解 中文第三版 十、模块

    摘要:来源编程精解中文第三版翻译项目原文译者飞龙协议自豪地采用谷歌翻译编写易于删除,而不是易于扩展的代码。模块之间的关系称为依赖关系。用于连接模块的最广泛的方法称为模块。模块的主要概念是称为的函数。 来源:ApacheCN『JavaScript 编程精解 中文第三版』翻译项目原文:Modules 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 编写易于删除,而不是易于扩...

    justjavac 评论0 收藏0
  • VIM 代码片段插件 ultisnips 使用教程

    摘要:博客原文同步安装插件安装分两部分,一个是插件本身,另外一个是代码片段仓库。一般来说把默认的代码片段仓库下载下来按需修改后上传到自己的即可。这时需要使用参数选项使用正则代码片段通常写代码的时候需要使用等来打印上下文中的变量。 博客原文同步 安装 Ultisnips 插件安装分两部分,一个是 ultisnips 插件本身,另外一个是代码片段仓库。一般来说把默认的代码片段仓库下载下来按需修改...

    jsummer 评论0 收藏0
  • JavaScript有用代码片段和trick

    摘要:在老的中其值为,在最新的中为,即空单元数组。在老中,相当于显示使用的方式创建长度为的数组。判断是否为中文判断是否为常见中文符号中文标点符号,。 本文内容来自知乎《有哪些短小却令人惊叹的 JavaScript 代码?》和文章《这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已》,同时也汇集了部分网上其它来源的内容。 浮点数取整 const x = 123.4545; ...

    junfeng777 评论0 收藏0
  • 30秒可以理解有用js代码片段

    摘要:相当于的使用返回一个函数,返回一个调用原始函数的。你可以省略来使用窗口的默认值。第一个最左边的函数可以接受一个或多个参数其余的功能必须是一元的。使用删除任何空字符串。如果是位数的颜色代码,则先转换为位数字版本。转颜色将的值转换为颜色代码。 原文基础上增加了其它方法以及注释等,进行了小幅度修改,便于阅读注意箭头函数有无{}会影响是否需要再return 原文地址 Adapter 适配器,以...

    phoenixsky 评论0 收藏0

发表评论

0条评论

PiscesYE

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<