Set 对象允许你存储任何类型的 唯一值 ,无论是 基本数据类型 还是 对象引用 。
使用 new Set() 进行声明和创建一个对象。
size :返回Set对象中值的个数
Set对象与数组之间的相互转换
三点语法 或 Array.from() 把Set对象转换为数组
注意:
const nums = [1,2,3,4,3,2,1]
uniq1 = [...new Set(nums)]
uniq2 = Array.from(new Set(nums))
定义:新数据结构Set,类似于数组,但成员值不重复
使用: new Set()
ps:New Set() 接受一个数组或类数组对象,在Set内部, NAN相等,两个对象不等,可以用length检测,可以用for...of遍历
size:返回值的个数
add(val):添加值,返回set结构;
delete(val):删除值,返回布尔值
has(val):是否包含,返回布尔值
clear():清除所有成员,无返回值
与set类似,也是不重复值的集合
与set的区别:1.weakset 成员只能是对象,对象都是弱引用,垃圾回收机制不考虑,不可遍历
定义:类似于对象,也是键值dui的集合,但键可以是各种类型(键可以为对象),两个键严格相等才为同一个键。
Var m = new Map(), o = {1:2}
m.set(o, ‘hi’)
m.get(o)
m.has(o) //只有对同一个对象的引用才是同一个键
size:返回值的个数
set(key, val):添加值,返回Map结构;
Get(key): 获取值,返回val
Has(key):是否包含,返回布尔值
Delete(key):删除值,返回布尔值
Clear():清除所有成员,无返回值
定义:把泪数组对象和有iterator接口的对象(Set Map Array)转化为数组
使用:Array.from(arrayLike[, mapFn[, thisArg]]) 参数:类数组,处理函数map,map中的this指向的对象
Array.from([1, 2, 3, 4, 5], (n) =>n + 1) // 每个值都加一
const map = new Map()
map.set(‘k1’, 1)
map.set(‘k2’, 2)
Const a = Array.from(map) // [[‘k1’,1], [‘k2’, 2]]
const set1 = new Set()
Set1.add(1).add(2).add(3)
Var a = Array.from(set1) // [1,2,3]
console.log('%s', Array.from('hello world’)) //["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"]
console.log('%s', Array.from('\u767d\u8272\u7684\u6d77’)) //["白", "色", "的", "海"]
var a = {0:1, 2:3, 4:5, length: 5}var b = {0:1, 2:3, 4:5, length: 3}
Array.from(a) // [1,undefined,3,undefined,4]
Array.from(b) // [1,undefined,3]
对象中有get和set方法,在读取和设定值的时候触发。vue中的数据绑定就是通过这个来实现的。
作用:
(1). 在对象内属性嵌套层级过多时,可以直接在对象下读取到对应属性,简化调用;
(2). 在get时可以任意设置属性名,可以不暴露组件内部属性名。
作用:
(1). 在对象内属性嵌套层级过多时,可以直接在对象下设置到对应属性,简化层级;
(2). set方法内的逻辑在赋值时会自动执行,可以监听属性值的改变
作用:
set方法可以监听对应属性值的改变,vue的数据动态绑定就是通过这个方法实现的,监听到vue实例中的data属性发生改变时,在set方法中触发模版重新渲染逻辑。
作用:
和方法1直接在对象中设置效果和原理相似