for-in和for-of的区别
for-in是es5的标准,遍历的是key,可遍历(数组,对象,字符串);
for-in更适合遍历对象,因为for-in遍历数组时,遍历顺序可能不是按照实际数组的顺序而来,for-in会遍历数组中所以可以枚举的属性;
for-of是es6的标准,遍历的是value,可遍历(数组,对象,字符串,Map,Set);
需要注意的是:forEach遍历数组,是无法使用breack中断循环的
Set,Map,WeakSet,WeatMap的区别
- Set:
- 成员唯一,无序不重复
- 可以遍历,方法:add,delete,has,clear 属性:size
- WeatSet
- 成员都是对象(弱引用,可以被回收),不能存放值
- weakSet对象中有多少个成员取决于垃圾回收机制有没有运行,可以用来保存DOM节点,不容易内存泄漏
- 不能遍历,方法:add,delete,has
- Map
- 本质上是键值对的集合,类似集合
- 可以遍历,方法:set,get,has,delete,clear
- 任何具有Iterator接口且成员是双元素数组的数据结构都可以传给Map
const m=new Map([["a",1],["b",2]])
- WeatMap
- 只接受对象作为键名(null除外)
- 键名是弱引用,键值任意
- 不能遍历,方法get,set,has,delete
数组sort方法的使用
-
数组在原数组上进行排序,不生成副本
-
没有传参数,将按照字符编码的顺序进行排序
-
传入比较函数(a,b)=>val; a-b升序,b-a降序