JS 您所在的位置:网站首页 标准曲线的建立思维导图 JS

JS

2023-06-04 21:24| 来源: 网络整理| 查看: 265

引用值(或对象)是某个特定引用类型的实例,引用类型就是把数据和功能组织在一起的结构,引用类型虽然有点像类,但是和类不是一个概念

Date

RegExp 正则

// 匹配字符串中的所有 "at"; const p1 = /at/g; log(p1.test("that")); // true; // 匹配第一个不区分大小写的 "bat" or "cat" const p2 = /[bc]at/i; log(p2.test("BAT")); // true; log(p2.test("baT")); // true; // 匹配所有包含 "at" 的三个字符组,忽略大小写 const p3 = /.at/gi; log(p3.test("nat3")); // true log(p3.test("at3")); // false 原始值和包装类型

扩展 Unicode 增补平面的问题 /** * 字符在 Unicode 增补字符平面时.length, charAt(index)等方法就会出现问题, * 因为 16 位只能唯一表示 Math.pow(2,16) = 65536 个字符 */ const msg = "ab😊de"; log(msg.length); // 6 不是预期的5,因为 😊 占了不是基于 16位码元完成的 log(msg.charAt(1)); // log: "b",预期一样 log(msg.charAt(2)); // log: "�" 预期不一样 log(msg.charAt(3)); // log: "�" 预期不一样 log(msg.charAt(4)); // log "d" 预期一样 log(String.fromCharCode(97, 98, 55357, 56842, 100, 101)); // 该方法正常 str.normalize(NFx) 实现字符串的标准化 解决一些 bug // 不同的编码对应同一个字符(如下的 几个 编码都对应 "Å",但是他们却互不相等) const a1 = String.fromCharCode(0x00c5), a2 = String.fromCharCode(0x212b), a3 = String.fromCharCode(0x0041, 0x030a); log(a1, a2, a3); // Å Å Å // 但是他们互不相等,因为编码方式不同 log(a1 == a2 || a1 == a3 || a2 == a3); // false /** * 同一个字符可以有不同的编码方式,但是因为编码不同导致出现相同的字符却不相等 * 为了解决这个 bug: Unicode 提供了 4 中规范化形式: NFD、NFKD、NFC、NFKC * 可以选择同一种规范话形式可以让比较仓做符返回正确的结果 */ const normalizeNFD = (str) => str.normalize("NFD"); log( normalizeNFD(a1) === normalizeNFD(a2) || normalizeNFD(a1) === normalizeNFD(a3) || normalizeNFD(a2) === normalizeNFD(a2) ); // true Array

数组的创建值 Array.from(iterator) / Array.of(...arguments) // *************** Array.from(iter, mapFn, this) **************** /** * 首先看 ts 声明 Array.from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; * from 接受一个可迭代对象或者是类数组,还接受一个 map 方法,还有一个 this 指向 */ // 可迭代对象 (字符串也是可迭代对象、因为可以使用 for...of 循环 log(Array.from("abcd")); // log: [ 'a', 'b', 'c', 'd' ] // map,set 都是迭代对象 const map = new Map(); map.set("key1", 1); map.set("key2", 2); map.set("key3", 3); log(Array.from(map)); // log: [ [ 'key1', 1 ], [ 'key2', 2 ], [ 'key3', 3 ] ] // 自定义可迭代对象 const iter = { *[Symbol.iterator]() { yield 1; yield 2; yield 3; yield 4; }, }; log(Array.from(iter, (v, k) => `${k}:${v}`)); // log: [ '0:1', '1:2', '2:3', '3:4' ] // *************** Array.of(...items: any[]) **************** log(Array.of(1, "2", { 3: 3 }, 4)); // log: [ 1, '2', { '3': 3 }, 4 ] 把一组参数 转化为数组 数组的转化方法 const person1 = { toLocaleString() { return "person1-toLocaleString"; }, toString() { return "person1-toString"; }, }; const person2 = { toLocaleString() { return "person2-tLS"; }, toString() { return "person2-tS"; }, }; const { log } = console const people = [person1, person2]; log(people.toString()); // "person1-toString,person2-tS" log(people.toLocaleString()); //"person1-toLocaleString,person2-tLS" const colors = ["red", "purple", "green"]; log(colors.join(" ### ")); // log: red ### purple ### green log(colors.join(" - ")); // log: red - purple - green


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有