美文网首页
20170711笔记

20170711笔记

作者: 潜水_12eb | 来源:发表于2017-07-11 23:40 被阅读0次

数组方法总结

  • 从数组末尾删除一项
    • ary.length--;
    • ary.length-=1
    • ary.length=ary.length-1
    • ary.pop()
    • ary.splice(ary.length-1,1)
  • 给数组末尾增加一项
    • ary[ary.length]=xxx
    • ary.push()
    • ary.splice(ary.length,0,'xxx')
  • 数组的克隆方法
    • slice()
    • slice(0)
    • ary.concat()
    • ary.splice(0) 返回值是克隆

选项卡封装

  • 功能
    • 可以让一个页面中多个容器都有选项卡的功能
    • 通过第二个参数 设置默认点亮项
  • 参数可有可无 是用||的思想 ‘’或‘’
    var selectIndex=selectIndex%aBtn.length||0;
  • %的思想
    var selectIndex=selectIndex%aBtn.length||0;
  • 一个选项卡代码(自定义)
 var oWrap=document.getElementsByTagName('div')[0];
    var aBtn=oWrap.getElementsByTagName('li');
    var aDiv=oWrap.getElementsByTagName('div');
    for(var i=0;i<aBtn.length;i++){
        aBtn[i].index=i;
        aBtn[i].onclick=function(){
            for(var i=0;i<aBtn.length;i++){
                aBtn[i].className='';
                aDiv[i].className='';
            }
            aBtn[this.index].className='on';
            aDiv[this.index].className='show';

        }
    }
  • 闭包写选项卡代码
for(var i=0;i<aBtn.length;i++){
        (function(index){
            aBtn[i].onclick=function(){
                for(var i=0;i<aBtn.length;i++){
                    aBtn[i].className='';
                    aDiv[i].className='';
                }
                aBtn[index].className='on';
                aDiv[index].className='show';
            }

        })
        (i)
    }

封装选项卡

function tab(id,selectIndex){
        var oWrap=document.getElementById(id);
        var aBtn=oWrap.getElementsByTagName('li');
        var aDiv=oWrap.getElementsByTagName('div');
        oWrap.style.width=aBtn.length*200+'px';
        selectIndex=selectIndex%aBtn.length||0;
        function on(seIndex){
            for(var i=0;i<aBtn.length;i++){
                aBtn[i].className='';
                aDiv[i].className='';
            }
            aBtn[seIndex].className='on';
            aDiv[seIndex].className='show';
        }
        on(selectIndex);
        /*for(var i=0;i<aBtn.length;i++){
         aBtn[i].index=i;
         aBtn[i].onclick=function(){
         for(var i=0;i<aBtn.length;i++){
         aBtn[i].className='';
         aDiv[i].className='';
         }
         aBtn[this.index].className='on';
         aDiv[this.index].className='show';

         }
         }*/
        for(var i=0;i<aBtn.length;i++){
            (function(index){
                aBtn[index].onclick=function(){
                   on(index)
                }

            })
            (i)
        }
    }
    tab('tab1');
    tab('tab2',2)

数组去重的方法

1、双重循环

for(var i=0;i<ary.length;i++){
  var cur=ary[i]
    for(var j=i+1;j<ary.length;j++){
           if(cur==ary[j]{
         ary.splice(j,1);
         j--;
          }
      }
}

2、先用sort,然后用当前项跟相邻项进行比较

ary.sort(function (a,b){
return a-b;
});
for(var i=0;i<ary.length;i++){
if(ary[i]===ary[i+1]){
ary.splice(i,1);
i--;
     }
}

3、 新数组

var  newAry=[];
for(var i=0;i<ary.length;i++){
if(newAry.indexOf(ary[i]==-1){
newAry.push(ary[i]);
  }
}

4、 利用不重名的特性

var obj={};
    //遍历数组中的每一项,如果对象中没有,把这一项赋值一份给对象,如果对像中已经有了,说明这是重复项,我们就删除数组中的这一项;
    for(var i=0; i<ary.length; i++){
        if(obj[ary[i]]){//走if说明重复了;
            ary.splice(i,1);
            i--;
        }else{//走else说明对象中没有这个数;那么就给obj添加属性
            obj[ary[i]]=ary[i];
        }
    }*/

5、 利用对象不重名的特性,实现了重复次数的记录,里面用到两个循环,一个for循环,for..in循环

var obj={};
    for(var i=0; i<ary.length; i++){
        if(obj[ary[i]]){
            obj[ary[i]]++; //++ +=1
        }else{//走else一定是对象没有;给这个属性名贴个1的标签
            obj[ary[i]]=1;
        }
    }
    //通过for..in拿到每个属性名;
    var newAry=[];
    for(var attr in obj){
        newAry.push(Number(attr));
    }

对象跟别人不同的特性

1、不重名的特性
2、如果对象的属性名是数字,那么打印出来的时候,按照数组的先后顺序进行显示

算法

快排

  • 1:先拿到中间的索引,通过中间索引找到他对应的项
    • 这个中间项,是从数组中拎出来,即数组中没有他了,所以,只能用splice;
    • splice的返回值,是被删除的内容以新数组的形式返回,因为我们删除了一项,所以,要去数字必须用[0];
  • 2:创建两个新数组left,right;
  • 3:用ary数组跟中间项比较,比他小的放left数组,比他大的放right数组
  • 4: return quciksort(left).concat([center],quciksort(right));
    • 函数自己调用自己,属于"递归"
  • 5:停止拆分的条件 if(ary.length<=1){return ary;}
    • return 1)有阻断程序执行的功能 2)返回值;

Math常用的方法

  • Math.ceil() 向上取整
  • Math.floor() 向下取整
  • Math.random() 取0~1之间的随机小数,不包含1;
    • Math.round(Math.random()*(m-n)+n); 取n~m之间的随机整数,包含m
  • Math.round() 四舍五入
  • Math.pow(2,3) 幂次方
  • Math.sqrt() 开平发
  • Math.abs() 取绝对值

插排

1、先从ary种取出来一个数字,单独是个数组 splice
2、遍历ary的数组,跟left数组,从后往前的比较,如果比left的数字小,继续往前比,如果比某个值大,就插入到这个值的下一项的前面;(必须break,否则就会出错) ;如果比所有的都小,那就插入到left数组的第一个;

冒排-冒泡排序

1、两重循环,第一重循环代表的是轮数,第二重循环代表的次数,比较的次数在一次次的减少;
2、 每次比较的时候,都拿当前项跟后一项进行比较,如果比他大,交换位置;

var tmp=ary[j];
ary[j]=ary[j+1];
ary[j+1]=tmp;

跟函数相关的

  • 阻断函数的执行 return;

跟循环相关的

  • break 阻断循环的执行
  • continue 本次不执行,以后继续;

相关文章

  • 20170711笔记

    数组方法总结 从数组末尾删除一项ary.length--;ary.length-=1ary.length=ary....

  • 读书笔记20170711

    在了解了逆向设计的过程——确定预期结果、确定合适的评估证据、设计学习体验和教学后,书中提供了一个模版,将这三者的...

  • 20170711

    昨天晚上10点左右和大爱爸爸妈妈们讨教完以后我就把自己的手机放到客厅去,和儿子道了晚安并提醒他约定时间到了也把手机...

  • 20170711

    https://book.douban.com/subject/10471333/ 最近仔細看了一下腳注。發現了一...

  • 20170711

    下午三点,有人说窗外下雨了,游泳馆突然开始放《喜欢你》,看着满池荡漾的水光,眼泪就不受控制地流下来。 现在开始有点...

  • 20170711

  • 20170711

    一切可以妥当的一定会妥当,准备迎接奇迹! 昨天中考成绩出来,感恩孩子的正常发挥,感恩曾老师之前心理辅导,在第一科语...

  • 20170711

    有时候一句谢谢,将两个人隔的越来越远,可也有些时候,因为没说一句谢谢,引来不少的指责,也许这在于人在设定心里距离有...

  • 20170711

    很喜欢今天完成的小海豚。 晚安。

  • 20170711

    上午给把合同书盖章后,给703寄过去了 中午把小论文又整了一下 下午码大论文,傍晚和师姐出去脱毛,然后吃个饭。 晚...

网友评论

      本文标题:20170711笔记

      本文链接:https://www.haomeiwen.com/subject/eegmhxtx.html