JavaScript高级程序设计(第4版)学习随笔【第六章】

本章内容集合引用类型(对象、数组与定型数组、Map、WeakMap、
Set以及WeakSet类型)

  • Object
    显式创建Object的实例方式有两种:
    使用new操作符和object构造函数
let obj = new Object()

或者对象字面量表示法

let obj = {
	name: 'haha',
	age: 15
}
  • Array
    创建数组方式:
let arr = new Array()
let arr = []

ES6新增:Array.from()、Array.of()

console.log(Array.from("Matt")); // ["M", "a", "t", "t"]
console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]

数组空位:数组是可以有空位的

const options = [,,,,,]; // 创建包含 5 个元素的数组
console.log(options.length); // 5 
console.log(options); // [,,,,,]

数组索引:数组是有顺序的,可按照下标找到对应的值,下标从0开始。
在这里插入图片描述
如何判断是不是数组:
1、Array.isArray(),返回true or false【ES5】
2、instanceof
3、Object.prototype.toString.call() === ‘[object Array]’

isArray 优于 instanceof;
不支持isArray【es5】 可用Object.prototype.toString.call() === '[object Array]'代替

迭代器方法:keys()、values()和entries()。

const a = ["foo", "bar", "baz", "qux"]; 
// 因为这些方法都返回迭代器,所以可以将它们的内容
// 通过 Array.from()直接转换为数组实例
const aKeys = Array.from(a.keys()); 
const aValues = Array.from(a.values()); 
const aEntries = Array.from(a.entries()); 
console.log(aKeys); // [0, 1, 2, 3] 
console.log(aValues); // ["foo", "bar", "baz", "qux"] 
console.log(aEntries); // [[0, "foo"], [1, "bar"], [2, "baz"], [3, "qux"]]

复制和填充方法
批量复制方法copyWithin(),以及填充数组方法fill()
在这里插入图片描述
在这里插入图片描述

  • 转换方法
    在这里插入图片描述

  • 栈方法(后进先出)
    在这里插入图片描述
    shift()取第一项,pop()取最后一项

  • 队列方法(先进先出)
    在这里插入图片描述- 排序方法
    在这里插入图片描述
    reverse()逆排序,sort()按照字符串形式排序

  • 操作方法
    concat()拼接数组
    在这里插入图片描述
    可用Symbol.isConcatSpreadable强制不打平数组
    在这里插入图片描述
    slice()拆分元素,返回新数组
    在这里插入图片描述
    splice(),最强大的数组方法,可实现删除、插入、替换
    在这里插入图片描述
    ECMAScript 提供了 3 个严格相等的搜索方法:indexOf()、lastIndexOf()和 includes()
    在这里插入图片描述
    断言函数:find()和findIndex(),返回搜索的元素和索引
    在这里插入图片描述
    迭代方法

    • every()
      对数组每一项进行判断,若每项都符合返回true,反之返回false
      在这里插入图片描述
    • some() 对数组每一项进行判断,若有一项符合就返回true,反之返回false
      在这里插入图片描述
    • filter()
      对每一项进行判断,数组形式返回符合条件的元素
      在这里插入图片描述
    • forEach() 遍历数组的每一项
      在这里插入图片描述
    • map() 遍历数组的每一项
      在这里插入图片描述
    • 归并方法
      reduce()和reduceRight(),reduce()从第一项开始遍历合并完最后一项,reduceRight()从最后一项合并到第一项。
      在这里插入图片描述
  • 定型数组(另一种形式的ArrayBuffer视图)

    • 合并、复制和修改
      • concat() 合并数组
      • pop() 取最后一项
      • push() 末尾插入元素
      • shift() 取第一项
      • splice() 替换、修改
      • unshift() 头部插入元素
      • set() 、subarray() 快速向外或向内复制数据
  • Map
    在这里插入图片描述
    在这里插入图片描述
    可用set()添加键/值
    在这里插入图片描述
    可用get()、has()查询映射
    在这里插入图片描述

  • WeakMap 弱映射

  • Set (ES6新增)很多方面类似“加强的Map"
    -
    同理拥有 WeakSet 弱集合

小结

  • 有 3 种原始值:Boolean、Number 和 String。
  • Object 类型是一个基础类型,所有引用类型都从它继承了基本的行为。
  • Array 类型表示一组有序的值,并提供了操作和转换值的能力。
  • Date 类型提供了关于日期和时间的信息,包括当前日期和时间以及计算。
  • RegExp 类型是 ECMAScript 支持的正则表达式的接口,提供了大多数基本正则表达式以及一些高级正则表达式的能力。
  • 定型数组包含一套不同的引用类型,用于管理数值在内存中的类型。
  • 内置对象:Global 和 Math。浏览器将 Global 实现为 window 对象。所有全局
    变量和函数都是 Global 对象的属性。Math 对象包含辅助完成复杂数学计算的属性和方法。
  • ECMAScript 6 新增了一批引用类型:Map、WeakMap、Set 和 WeakSet。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值