发表于: 2017-03-25 16:16:37

1 1175


任务十五

今天完成的事情

  1. 1. 学习css的bem命名法,b是块block,e是元素element,m是状态modifier。实例演示:
  2. <form class="search-form">
         <input type="text" class="search-form__username">
         <input type="password" class="search-form__password">
         <button id="J_Submit" class="search-form__submit--active"></button>
    <form>
  3. 2.学习js变量的命令规范
  4. 变量采用驼峰命名,根据不同的类型选择不同的首字母,以下命名方法只是其中一种,具体的以各公司团队规定为准。
    • s:表示字符串。例如:sName,sHtml;
    • n:表示数字。例如:nPage,nTotal;
    • b:表示逻辑。例如:bChecked,bHasLogin;
    • a:表示数组。例如:aList,aGroup;
    • r:表示正则表达式。例如:rDomain,rEmail;
    • f:表示函数。例如:fGetHtml,fInit;
    • o:表示以上未涉及到的其他对象,例如:oButton,oDate;
    • g:表示全局变量,例如:gUserName,gLoginTime
  5. 3.学习数组的去重算法。
  6. 4.测试function中未声明的变量是否会成为全局变量,答案是会,与其所在函数内和函数外没有关系。

明天计划的事情

  1. 1.准备ppt。
  2. 2.学习洗牌算法。

遇到的问题

1.对于数组去重,比较暴力的方法是使用两个for循环对整个数组遍历,想看以下有没有好一点的其他办法,然后在网上发现了一个比较巧妙的办法:

var arr = [1,2,3,1,1,1,1];
function toHeavy(array){
//这是一个缓存对象,用来实现过滤到重复的数据
  var cache = {};
//定义一个中间数组,用来实现当容器
  var cacheArr = [];
for(var i = 0,len = array.length;i<len;i++){
if(!cache[array[i]]){
cacheArr.push(array[i]);
cache[array[i]] = array[i];
};
};
return cacheArr;
};
arr = toHeavy(arr);//arr ==  [1,2,3]
  1. 大致思路是,将数组的每一个值变为cache对象的属性名,比如数组[1,2],传给cache的对象属性名,cache对象就多了1,2这2个属性,传完以后再通过判断cache对象1属性存不存在来判断1有没有在剩下的数组中重复。不过这段代码有一个小问题,判断对象属性是否存在使用的是判断cache[array]的值这一方法,当不存在时值为underfined,但是如果数组中的值为0或者空字符串,就会会出现问题。所以应该改为!(array[i] in cache),通过使用in运算符的方式来判断。
  2. 收获

  1. 1学习了css和js的一般命名方法。
  2. 2.学会了数组去重的方法。



返回列表 返回列表
评论

    分享到