好吧 最近忙着跳槽面试 重新开始复习之前的知识点。7号那天听了小爝大神的live,有提到要写技术博客,所以这是个开始吧 希望自己坚持下去
参考廖雪峰廖大的全栈教程,Mozilla开发者文档
今日内容:
for..in.. 循环
例子:
var arr = ["A","B","c"]
for(var i in arr){
alert(i);// 0,1,2
alert(arr[i]);//"A","B","C"
}
之前遇到这个循环是在一个node.js模块里面解析键值对,我比较菜,没发现问题在这儿 。
for in 循环遍历i的位置,就是这个键值结构的“键” 不过后来有看到阮一峰大神的ES6入门 ,建议以for of 循环来遍历,因为不论是for in 还是forEach 方法中途不可以跳出。
还有一点,可以使用 hasOwnProperty()方法过滤掉对象的继承属性,切记
map与set
JS以{}这个来表示对象,但是有个规定,键的位置必须是字符串,其实这个位置别的类型也可以(廖大语)。所以ES6为了解决这个问题,引入了map这个新型数据结构,查找速度大大增加。我把Map结构联想成二维数组。
具体操作如下:
var m = new Map([["A",1],["B",2],["C",3]]);
m.get("A");//1 获取键为"A"的值
m.has("A");//true;
m.delete("A");
m.has("A");//false
var m = new Map();//新建一个空Map;
m.set('James',23);//添加
//一个key对应一个值,所以多次对一个key复制,后边的值会被冲掉
m.set('James',6);
m.get('James');//6 这里真的不是黑詹姆斯....
set与map 类似,是键集合。其实set更像是没有重复的数组。
var s = new Set();//空set
var s = new Set([1,2,3,3,'3']);
s //Set{1,2,3,'3'}
//delete(key)
s.delete('3');//Set{1,2,3}
//add(key)
s.add(4);
//{1,2,3,4}
所以可以使用set来给数组去重
var items = new Set([1, 2, 3, 4, 5]);
var array = Array.from(items);//Array.from
方法可以将Set结构转为数组。
////////////////////////////////////////////////////
function dedupe(array) {
return Array.from(new Set(array));
}dedupe([1, 1, 2, 3]) // [1, 2, 3]