博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 一些实用技巧
阅读量:6081 次
发布时间:2019-06-20

本文共 2698 字,大约阅读时间需要 8 分钟。

快速创建从0到n的数字

let arr1 = [...(new Array(n)).keys()];let arr2 = Array.from({length:n},(v, k) => k);

Array.from 用法

Array.from({ length: 3 }, () => 'haha') // ["haha", "haha", "haha"]

随机返回几个 emoji

Array.from(  {length: 7},  (v, i) => String.fromCodePoint(    129300 + Math.floor(Math.random() * 20)  )); // ["?", "?", "?", "?", "?", "?", "?"]

数组的深拷贝

使用扩展运算符代替concat() 或者 slice()方法

let arr1 = [10, 20, 30];// make a copy of arr1let copy = [...arr1];console.log(copy);    // → [10, 20, 30]let arr2 = [40, 50];// merge arr2 with arr1let merge = [...arr1, ...arr2];console.log(merge);    // → [10, 20, 30, 40, 50]

快速找出数组中的最大值、最小值

let arr = [10, 20, 30]// 相当于 Math.max(10, 20, 30)console.log(Math.max(...arr));    // → 30console.log(Math.min(...arr));    // → 10

对象扩展

let obj1 = {  a: 10,  b: 20};let obj2 = {  ...obj1,  c: 30};console.log(obj2);    // → {a: 10, b: 20, c: 30}

注意,当obj2定义了与obj1中相同的属性时,会自动覆盖:

let obj1 = {  a: 10,  b: 20};let obj2 = {  ...obj1,  a: 30};console.log(obj2);    // → {a: 30, b: 20}

Object.assign() 应用

let obj1 = {a: 10};let obj2 = {b: 20};let obj3 = {c: 30};// ES2018console.log({...obj1, ...obj2, ...obj3});    // → {a: 10, b: 20, c: 30}// ES2015console.log(Object.assign({}, obj1, obj2, obj3));    // → {a: 10, b: 20, c: 30}

随机字符串

Math.random().toString(16).substring(2) // 13位Math.random().toString(36).substring(2) // 11位

取整

var a = ~~10.23     // 10var b = 10.23 | 0   // 10var c = 10.23 >> 0   // 10

每三个数字加逗号

// 正则:var num = '1234567890'var format = num.replace(/\B(?=(\d{3})+(?!\d))/g, ',')console.log(format) // 1,234,567,890//非正则: function formatCash(str) {       return str.split('').reverse().reduce((prev, next, index) => {            return ((index % 3) ? next : (next + ',')) + prev       })}console.log(formatCash('1234567890')) // 1,234,567,890

数字字符串转换成数字(不用Number、parseInt和parseFloat)

var a ='666' +a  // 666

随机打乱一个数组

let arr = [1,2,3,4,5,6,7,7]arr.slice().sort(() => Math.random() - 0.5)

随机颜色,随机十六进制代码

'#' + Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, '0');

用最短的代码实现一个长度为m(6)且值都n(8)的数组

Array(6).fill(8)

判断奇偶数

const isEven = num => num % 2 === 0;// isEven(3) -> false

斐波纳契数组

const fibonacci = n =>    Array(n).fill(0).reduce((acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i), []);    // fibonacci(5) -> [0,1,1,2,3]

大写每个单词的首字母

const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase());// capitalizeEveryWord('hello world!') -> 'Hello World!'

反转一个字符串

const reverseString = str => [...str].reverse().join('');// reverseString('foobar') -> 'raboof'

取整

// 1. 丢弃小数,保留整数parseInt(5/2);// 2.向上取整 Math.ceil(5/2);// 3,四舍五入.Math.round(5/2);// 4,向下取整Math.floor(5/2);

转载于:https://www.cnblogs.com/cckui/p/10871302.html

你可能感兴趣的文章
开发环境、生产环境、测试环境的基本理解和区别
查看>>
tomcat多应用之间如何共享jar
查看>>
Flex前后台交互,service层调用后台服务的简单封装
查看>>
MySQL入门12-数据类型
查看>>
Windows Azure 保留已存在的虚拟网络外网IP(云服务)
查看>>
修改字符集
查看>>
HackTheGame 攻略 - 第四关
查看>>
js删除数组元素
查看>>
带空格文件名的处理(find xargs grep ..etc)
查看>>
华为Access、Hybrid和Trunk的区别和设置
查看>>
centos使用docker下安装mysql并配置、nginx
查看>>
关于HTML5的理解
查看>>
需要学的东西
查看>>
Internet Message Access Protocol --- IMAP协议
查看>>
Linux 获取文件夹下的所有文件
查看>>
对 Sea.js 进行配置(一) seajs.config
查看>>
第六周
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>