<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script> var arr = [1, 1, 2, 2, 3, 3, 3] // console.log(arr) let set = new Set(arr) // console.log(set) set[3] = 2 // console.log(set) // set 作为数据结构,里面的成员都是唯一的 let strarr = new Set(["s", "l", "S", "L"]) // console.log(strarr) //[s,l,S,L] strarr.delete("s") // console.log(strarr, "new") // console.log(strarr.has("L")) for (let i of strarr.keys()) { // console.log(i) } //for in 会失败 for (let i of strarr.values()) { // console.log(i) } //set实例的键和值都是一样的 所以用keys()/values()的时候 遍历得到的结果是一样的 // entries() 返回键+值 for (let i of strarr.entries()) { // console.log(i) } //Array [ "l", "l" ] // Array["S", "S"] // Array["L", "L"] // 向 Set 加入值的时候,不会发生类型转换,所以5和"5"是两个不同的值。相同字母的大小写也是不同的值 //set 属性 // set.prototype.constructor 构造函数 // set.prototype.size 返回set实例的值的个数 // set 方法 // set.prototype.add(要添加的值) 向set实例中添加一个元素 // set.prototype.delete(删除的值) 删除set实例中的一个元素 // set.prototype.clear() 清空 // set.prototype.has(要判断的值) 判断是否在set实例中 返回的是布尔值 // Array.from(set的实例) 将set实例转成数组 // 数组去重 // function dedupe(array) { // return Array.from(new Set(array)); // } // dedupe([1, 1, 2, 3]) // [1, 2, 3] // map const map = new Map([ ['name', '张三'], ['title', 'Author'] ]); console.log(map) const m = new Map(); const o = { p: 'Hello World' }; m.set(o,'content') // m.set(key,value) map实例中能用对象来当键 //json 方法: // json.stringfy() 对象转成json // json.parse() json转对象 console.log(m.get(o)) </script> </head> <body> </body> </html>