es6
字符串与常用方法
// var //全局作用域
// global //全局作用域
// const a = 1; //块级作用域 静态变量 必须立即赋值
// console.log(a);
// let //块级作用域 可以随便改 不能重复命名
// let 与 const不能先使用后定义
// let a = {
// name: ‘张三’,
// age: 36,
// sex: ‘male’,
// };
// es6 取对象值
// let { age, sex } = a;
// console.log(age, sex);
// 解构赋值 主要用在函数中
// let a = {
// name: ‘香菇’,
// price: 15,
// tip: ‘有毒’,
// };
// let { name, tip, price } = a;
// console.log(name, price, tip);
// 解构赋值用于函数
// 可以设默认值
// function add({ name, tip, price, taste = ‘恶心’ }) {
// console.log(${name}的特点是${tip},价格是${price},口味是${taste}
);
// }
// let person = {
// name: ‘香菇’,
// price: 15,
// tip: ‘有毒’,
// address: ‘隆客佳’,
// };
// add(person);
// Arguments对象
// let a;
// …伪数组转换为真数组 扩展运算符 将数组展开
// function name1(a, b, c, …args) {
// console.log(arguments[0]);
// console.log(’=’);
// 伪数组 没有数组的方法
// console.log(arguments);
// console.log(’=’);
// console.log(’=’);
// for (let index = 0; index < arguments.length; index++) {
// console.log(arguments[index]);
// }
// console.log(’=’);
// console.log(a, b, c);
// 遍历时转换为数组
// console.log(args);
// }
// name1(99, 2, 3, 4, 5);
// this 对象的一个引用 指向上一层
// function a() {
// console.log(’=’);
// console.log(this);
// console.log(’=’);
// }
// let name2 = {
// 定义在对像中的方法不用写function
// b() {
// console.log(this);
// },
// };
// name2.b();
// 箭头函数
// 无参数 () => {}
// 单个参数 x => {}
// 多个参数 (x,y) => {}
// 解构参数 ({x,y}) => {}
// 街头函数没有自己的this,导致内部的this是外层代码块的this
// function aa() {}
// (value) => {
// }
// let aaa = [1, 2, 3];
// aaa.forEach((value) => {
// console.log(value);
// });
// js中基本数据结构 number boolean null undefined string object 都是对象 symbol
// let num = ‘1’;
// console.log(typeof Number(num));
// 字符串方法
// 输出指定位置
let str = ‘Hello world’;
let str2 = ’ 香菇有毒 ';
// console.log(typeof str);
// 输出指定位置
console.log(str.charAt(4));
// 输出指定位置编码
console.log(str.charCodeAt(3));
// 连接字符
console.log(str.concat(str2));
// 验证最后几个字符串是否与括号中的字符串一样 数据类型布尔型
console.log(str.endsWith(‘Hello world’));
// 将Unicode编码转为字符 String代表字符串 对象里可以存方法
console.log(String.fromCharCode(108));
// 查询字符串首次出现的位置 空格也是一个字符 差不多返回-1 位置从0开始
console.log(str.indexOf(‘ll’));
// 1.查询字符串是否包含指定的子字符串 es6新增 返回值布尔型
console.log(str.includes(‘Hello’));
// 正则表达式 重要
let rgx = /llo/;
// 与正则表达式相同
console.log(’’);
console.log(str.match(rgx));
// 与正则表达式相同
console.log(’’);
console.log(str.search(rgx));
console.log(’==============’);
// 复制字符串指定次数
// console.log(str2.repeat(5));
// 替换子字符串 正则表达式和自己输入子字符串都可以
// console.log(str.replace(rgx, ‘ttt’));
// console.log(str.replaceAll(rgx, ‘ttt’)); 有疑问
// 把字符串分割,返回提取的部分
// console.log(str.slice(0, 5));
// 1把字符串分割为字符串数组
console.log(str.split(’ '));
// 从索引号提取字符串指定数目的字符
// @ 特别注释
console.log(str.substr(0, 5)); //0是下标 5是长度
console.log(str.substring(0, 5)); //都是下标
// 全部小写
console.log(str.toLocaleLowerCase());
// 全部大写
console.log(str.toLocaleUpperCase());
// 1去除字符串的两边空白
console.log(str2.trim());
数组方法
let arr = [‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘’, ‘w’, ‘o’, ‘r’, ‘l’, ‘d’];
let arr2 = [‘I’, ‘a’, ‘m’, ‘张’, ‘三’];
let arr3 = [1, 2, 3, 3, 67, 456, 345, 2, 3, 4, 6];
let arr4 = [
{
name: ‘李云龙’,
age: 18,
},
{
name: ‘刘德华’,
age: 18,
},
{
name: ‘吴彦祖’,
age: 18,
},
];
// 连接多个数组返回结果
// console.log(arr.concat(arr2));
// 检查每个元素是否符合条件
// console.log(
// arr3.every((value) => {
// return value < 600;
// })
// );
// 使用一个固定值填充数组 用1填充 并且从0号位置开始 填充三个单位
// console.log(arr.fill(1, 0, 3));
// 检测数值元素,并返回符合条件所有元素的数组 过滤器
// console.log(
// arr3.filter((value) => {
// return value < 20;
// })
// );
//自学debug
// 返回符合传入测试条件的数组元素
// console.log(
// arr4.find((value) => {
// return value.name === ‘刘德华’;
// })
// );
// 返回符合传入测试条件的数组元素下标
// console.log(
// arr4.findIndex((value) => {
// return value.name === ‘刘德华’;
// })
// );
// 数组每个元素执行一次回调函数 遍历整个数组
// console.log(
// arr4.forEach((element) => {
// element.age = 30;
// })
// );
// console.log(arr4);
// console.log(
// arr4.map((element) => {
// element.age = 50;
// return element; //直接返回新数组
// })
// );
// 伪数组转换为真数组
// function aa() {
// console.log(arguments);
// console.log(Array.isArray(arguments));
// console.log(Array.from(arguments));
// }
// aa(1, 2, 3, 4, 5);
// 判断是否为数组
// console.log(Array.isArray(arr));
//1数组变为字符串
// console.log(arr.join(’|’));
//在末尾压入一个感叹号,并返回长度,修改原素组
// console.log(arr2.push(’!’));
// 在头部压入一个感叹号,并返回长度,修改原素组
// console.log(arr2.unshift(‘qjb’));
// console.log(arr2);
// 删除
// console.log(’=================’);
// 在末尾删除
// console.log(arr2.pop());
// console.log(arr2);
// 在头部删除
// console.log(arr2.shift());
// console.log(arr2);
// 把数值元素计算为一个值
// console.log(
// arr3.reduce((a, b) => {
// return a + b;
// })
// );
// 翻转数组顺序
// console.log(arr3.reverse());
// console.log(arr3);
// 截取数组的一段 不改变原数组
// console.log(arr3.slice(0, 5));
// console.log(arr3);
// 1删除原数组指定位置 改变原数组 返回删除部分 实现增删改功能
// console.log(arr3);
// console.log(arr3.splice(0, 1, ‘dd’));
// console.log(arr3);
//转换为字符串
console.log(arr3.toString());
对象
let obj1 = {
name: ‘周运发’,
age: 12,
};
let obj2 = {
name: ‘刘德华’,
sex: ‘男’,
};
// 合并两个对象 并且后面数据覆盖前面数据
// console.log(Object.assign(obj1, obj2));
// 枚举属性名 key
// console.log(Object.keys(obj1));
// Object.keys(obj1).forEach((element) => {
// console.log(element);
// console.log(obj1[element]);
// });
// for (let key of Object.keys(obj2)) {
// console.log(key);
// console.log(obj1[key]);
// }
// 返回对象的值 value
// console.log(Object.values(obj2));
//返回对象自身可枚举属性的键值对数组
// console.log(Object.entries(obj2));
// 冻结一个对象
// Object.freeze(obj1);
// obj1.name = ‘123’;
// console.log(obj1);
// 比较两个值是否相等 强等于
// Object.is(1, 1);
// console.log(Object.is(1, 2));
// console.log(Object.is(NaN, NaN));
Math对象
// console.log(Math.E);
// let a = -1;
// let b = 3.4;
// 取绝对值
// console.log(Math.abs(a));
// 对下取舍
// console.log(Math.floor(b));
// 对上取舍
// console.log(Math.ceil(b));
// 四舍五入
// console.log(Math.round(b));
// 随机数
// console.log(Math.floor(Math.random() * 100));
Date对象
let datel = new Date();
// console.log(datel);
// console.log(datel.getTime());
// 程序运行时间
// let date2 = new Date();
// console.log(date2.getTime() - datel.getTime());
// let date = new Date(‘2021-12-24 13:35:46’);
// console.log(date);
// console.log(date.getHours());
// console.log(date.getMinutes());
// console.log(date.getMonth() + 1);
es6新的数据结构 Symbol
// let syb = Symbol(‘name’); //独一无二
// let syb2 = Symbol.for(‘age’); //可以重复
// console.log(typeof syb);
// console.log(syb2);
// console.log(Symbol.keyFor(syb2));
//
set 类似于数组
// let set = new Set([2, 3, 4]);
// set.add(1);
// set.add(2);
// set.add(3);
// set.delete(1);
// 检查
// console.log(set.has(2));
// 类似于对象
// console.log(set.keys());
// console.log(set.values());
// 清空
// console.log(set.clear());
// set.forEach((element) => {
// console.log(element);
// });
// console.log(set);
// let arr = [1, 2, 3, 2, 3, 4, 5, 3, 1];
// console.log(new Set(arr));
//扩展运算符 变成数组
// console.log([…new Set(arr)]);
Map类似于对象 前面是key值后面是value
let map = new Map();
map.set(1, ‘aa’);
// console.log(map);
// map.set(‘1’, 15);
console.log(map.get(1));
// @primse 判断是否有所输入的key值
console.log(map.has(1));
console.log(map.size);
number对象
let num = 12123211323343234;
let num2 = 12.111;
// 将数字转换为指数计数法
// console.log(’======================’);
// console.log(num.toExponential(3));
// 转换为字符串 结果的小数点后有指定位数的数字
// 1 常用于钱
// console.log(num2.toFixed(2));
// 把数字格式化为指定的长度
console.log(num2.toPrecision(3));
// 判断是否为整数
console.log(Number.isInteger(num));
console.log(Number.isInteger(num2));