jscoding
Version:
A envirement for coding and debugging javascript language.
199 lines (196 loc) • 9.73 kB
JavaScript
/**
* 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 (中国标准时间)。
*/