UNPKG

jscoding

Version:

A envirement for coding and debugging javascript language.

199 lines (196 loc) 9.73 kB
/** * Array */ /* 增删改查 */ let arr = [1, 2, 3, 4, 5, 6]; arr.push('z'); // 尾部添加 arr.unshift('a'); // 头部添加 arr.shift(); // 头部删除 arr.pop(); // 尾部删除 arr.splice(1, 2); // 区间删除并返回删除的值 arr.splice(1, 0, 7); // 区间增加并返回删除的值 [] arr.includes('a'); // 简单单个查询 arr.slice(0, 2); // 拷贝0到2 不会毁坏原数组 arr.slice().splice(0, 2); // splice 分割0到2 会更改原数组, 将0,2区间内的删除 c('concat', arr.concat(arr)); /* 数组排序 */ arr.sort() //字符正序 arr.sort((a, b) => b > a); //数字倒序 arr.reverse(); //数组反转 /* 数组迭代 */ arr.forEach((item, index) => { console.log({ index, item }) }); // 数组遍历 arr.map(item => item * item); // 过滤器, 深刻拷贝, 在框架里多用于接口数据转化 arr.find(item => item > 2); // 复杂单个查询 arr.filter((item, index) => index > 1); // 过滤出数组1以后的元素 arr.reduce((prev, curr) => prev + curr, 0); // 数组归并 arr.indexOf(2); arr.lastIndexOf(2); arr.some(item => item >= 1); arr.every(item => item <= 10); arr.fill(0); // 多用例: let newArr = new Array(number).fill(0) => [0,0,0,0,0] /** * Set */ let set = new Set(); /* 增 */ console.log(set.add(0)); // except output: Set(1) {0} /* 增 */ console.log(set.add('s')); // except output: Set(2) {0, "s"} /* 删 */ console.log(set.delete('s')); // except output: true /* 查 */ console.log(set.has('s')); // except output: false /* 遍历 */ set.forEach((item, index) => console.log({ index, item })); // except output: {index: 0, item: 0} console.log(set.values()); // except output: SetIterator {0} /** * Map */ let map = new Map(); let list = ['456']; /* 增 */ console.log(map.set(list, 'aaa')); // except output: Map(1)  { Array(1) => "aaa" } /* 删 */ console.log(map.delete(list)); // except output: true /* 查 */ console.log(map.has(list)); // except output: false /* 查 */ console.log(map.get(list)); // except output: undefined /* 改 */ console.log(map.set(list, 'bb')); // except output: Map(1)  { Array(1) => "bb" } /* 遍历 */ map.forEach((value, key) => console.log(`key:${key}`, `value:${value}`)); // except output: key: 456 value: bb /* 构建数组 */ console.log(Array.from(map.values())); // except output: ["bb"] /** * String */ /* 是否以指定字符串开头 */ console.log('start'.startsWith('x')); // excet output: false console.log('start'.startsWith('s')); // excet output: true /* 是否以指定字符串结尾 */ console.log('end'.endsWith('x')); // excet output: false console.log('end'.endsWith('d')); // excet output: true /* 是否包含指定字符串 */ console.log('include'.includes('xx')); // excet output: false console.log('include'.includes('in')); // excet output: true /* 返回指定重复次数的字符串 */ console.log('repeat'.repeat(2)); // except output: repeatrepeat /* 末尾补白,返回补白后的字符串, `str.padEnd(总位数, 补位字符)` */ console.log('padEnd'.padEnd(3, '0')); // excet output: 'padEnd000' /* 开头补白,返回补白后的字符串, `str.padEnd(总位数, 补位字符)` */ console.log('padStart'.padStart(3, '0')); // excet output: '000padStart' /* 截取并返回一个指定位置字符 */ console.log('charAt'.charAt(0)); // excet output: 'c' /* indexOf & lastIndexOf 顺序搜索字符串,返回字符串第一次/最后一次出现的位置或 -1 */ console.log('indexOf'.indexOf('i')); // excet output: 0 console.log('indexOf'.indexOf('t')); // excet output: -1 console.log('indexOf'.lastIndexOf('i')); // excet output: 0 console.log('indexOf'.lastIndexOf('t')); // excet output: -1 /* 查找字符串(可以使用正则),返回正则表达式与给定字符串第一次匹配的索引或 -1 */ console.log('search'.search(/e/)); // excet output: 1 /* 截取字符串,返回子串, 效果同 substr 但可以操作数组 */ console.log('slice'.slice(3, 5)); // except output: ce /* 截取字符串,返回子串, 如果是 `str.substr(2);` 就是从 index 2开始截取到最后 */ console.log('substr'.substr(1, 2)); // except output: ub /* 分割字符串,返回数组,与charAt用法不同的是它可以分割完赋值一个变量然后多次提取 */ console.log('split'.split(' ')); // except output: ["split"] /** * Number * * Number(object) 函数把对象的值转换为数字。 * 如果参数是 Date 对象,Number() 返回从 1970 年 1 月 1 日至今的毫秒数。 * 如果对象的值无法转换为数字,那么 Number() 函数返回 NaN。 */ console.log(Number(new Boolean(true))); // except output: 1 console.log(Number(new Boolean(false))); // except output: 0 console.log(Number(new Date())); // except output: 1583113492023 console.log(Number(new String("999"))); // except output: 999 console.log(Number(new String("999 888"))); // except output: NaN /** * parseFloat * * parseFloat(string) 函数可解析一个字符串,并返回一个浮点数。 * * 如果该函数指定字符串中的首个字符是否是数字,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字,而不是作为字符串。 * 如果在解析过程中遇到了正负号(+ 或 -)、数字 (0-9)、小数点,或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数。 * 如果参数字符串的第一个字符不能被解析成为数字,则 parseFloat 返回 NaN。 * 如果让 NaN 作为了任意数学运算的操作数,则运算结果必定也是 NaN。 * 开头和结尾的空格是允许的。 */ console.log(parseFloat("10")); // except output: 10 console.log(parseFloat("10.00")); // except output: 10 console.log(parseFloat("10.33")); // except output: 10.33 console.log(parseFloat("34 45 66")); // except output: 34 console.log(parseFloat(" 60 ")); // except output: 60 console.log(parseFloat("40 years")); // except output: 40 console.log(parseFloat("He was 40")); // except output: NaN /** * parseInt * * parseInt(string, radix) 函数可解析一个字符串,并返回一个整数。 * 当参数radix的值为0,或没有设置该参数时,parseInt()会根据 string 来判断数字的基数。 * 如果string以"0x"开头,parseInt()会把string的其余部分按十六进制解析为数字。 * 如果string以0开头,parseInt()会把其后的字符按八进制或十六进制解析为数字。 * 如果string以1~9的数字开头,parseInt()会把它按十进制解析为数字 。 * 开头和结尾的空格是允许的。 */ console.log(parseInt("10")); // except output: 10 console.log(parseInt("19", 10)); // except output: 19 console.log(parseInt("11", 2)); // except output: 3 console.log(parseInt("17", 8)); // except output: 15 console.log(parseInt("1f", 16)); // except output: 31 console.log(parseInt("010")); // except output: 10 console.log(parseInt("He was 40")); // except output: NaN /** * Math对象 */ /* round 四舍五入 */ console.log(Math.round(0.1)); // except output: 0 console.log(Math.round(0.5)); // except output: 1 /* abs 取绝对值 */ console.log(Math.abs(1)); // except output: 1 console.log(Math.abs(-1)); // except output: 1 /* max & min 取最/大最小值 */ console.log(Math.max(2, -1, 5)); // except output: 5 console.log(Math.min(2, -1, 5)); // except output: -1 /* floor & ceil 向下/向上取整 */ console.log(Math.floor(3.2)); // except output: 3 console.log(Math.floor(-3.2)); // except output: -4 console.log(Math.ceil(3.2)); // except output: 4 console.log(Math.ceil(-3.2)); // except output: -3 /* pow & sqrt 取幂/开根 */ console.log(Math.pow(2, 2)); // except output: 4 console.log(Math.pow(2, 3)); // except output: 8 console.log(Math.sqrt(4)); // except output: 2 console.log(Math.sqrt(-4)); // except output: NaN /* log & exp 取对数/指数 */ console.log(Math.log(Math.E)); // except output: 1 console.log(Math.log(10)); // except output: 2.302585092994046 console.log(Math.exp(1)); // except output: 2.718281828459045 console.log(Math.exp(3)); // except output: 20.085536923187668 /* random 取随机数 */ console.log(Math.random()); // except output: 0.7151307314634323 function getRandomArbitrary(min, max) { return Math.random() * (max - min) + min; } /* 三角/反三角函数 */ console.log(Math.sin(0)); // except output: 0 console.log(Math.cos(0)); // except output: 1 console.log(Math.tan(0)); // except output: 0 console.log(Math.asin(1)); // except output: 1.5707963267948966 console.log(Math.acos(1)); // except output 0 console.log(Math.atan(1)); // except output 0.7853981633974483 /** * toString * * numberObject.toString(radix) 方法可把一个 Number 对象转换为一个字符串,并返回结果。 * 参数 radix 可选,表示数字的基数,使 2 ~ 36 之间的整数。若省略该参数,则默认使用基数 10。 * * arrayObject.toString() 方法可把数组转换为字符串,并返回arrayObject 的字符串表示。 * 该方法返回值与没有参数的 join() 方法返回的字符串相同(数组中的元素之间用逗号分隔)。 * * booleanObject.toString() 方法可把一个逻辑值转换为字符串,并返回返回字符串 "true" 或 "false"。 * * dateObject.toString() 方法可把 Date 对象转换为字符串,并返回 dateObject 的字符串表示。 * 使用本地时间表示,如:Mon Mar 02 2020 12:04:22 GMT+0800 (中国标准时间)。 */