技术复习日记day1

好吧 最近忙着跳槽面试 重新开始复习之前的知识点。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]

你可能感兴趣的:(技术复习日记day1)