webveuje/es6/setmap.html

96 lines
2.5 KiB
HTML
Raw Normal View History

2021-03-23 10:58:10 +08:00
<!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>