zoukankan      html  css  js  c++  java
  • javascript的一些算法的实用小技巧

    一、交换两个数字的值

      我们交换两个数字的值想到的方法一般就是用一个新的变变量,让他把一个数存起来,然后在交换两个数字的值,看下面这种。

    var a = 1,
          b = 2;
    //交换两个数字的值
        var c;
        c = a;
        a = b;
        b = c;
    

      看下面这段代码,也可以交换两个数字的值,如果这样写你会不会发现特别高大上。

     var a = 1,
         b = 2;
     a = [b, b = a][0];
    这里其实是a = [][0]数组下标为0的那个,然后 b = a; 这样也可以交换两个数字的值了。

    二、数组的排序

     1.数组方法中的sort排序方法。

     var a = [9,8,8,6,1,2,4,56];
        a.sort(function(a,b){
        	return a - b;//由小到大排序
        })
        console.log(a)
    

      这是数组方法中的sort排序方法,如果return b - a; 就是由大到小排序,其中的原理是什么呢,其实就是冒泡排序法

     2.冒泡排序法 (由小到大排列)

    var a = [9,8,7,6,5,4,3,2,1];
    for(var i=0; i<a.length-1; i++){
       for(var j=0; j<a.length-i; j++){
           if(a[j]>a[j+1])
               a[j] = [a[j+1], a[j+1]=a[j]][0];		
        }
    }
    console.log(a)
    

     3.选择升序法(由小到大排列)

     var a = [9,8,7,5,6,4,1,3,1];
        for(var i=0; i<a.length-1; i++){
        	for(var j=i+1; j<a.length; j++){
        		if(a[i]>a[j])
                    a[i] = [a[j],a[j]=a[i]][0];
        	}
        }
        console.log(a)
    

    三、for in 循环 遍历json

      我学习for in循环的时候是在学json的时候学到的,看下面这段代码。

      1.for in循环遍历出json里面所有的属性名

     	var json = {
       		a : 1,
       		b : 2,
       		nam : 'Z',
       		clas2 : '我们的'
       	}
       	for(var i in json){
       		console.log(i)
       	}
    

      2.我们打印出来的i会是json里面所有的属性名,那么他是怎么循环的呢,我当时一直不太清楚,你尝试一下下面这段代码看一下效果。

    	var json = {
       		a : 1,
       		b : 2,
       		nam : 'Z',
       		clas2 : '我们的'
       	}
       	for(var i in json);
       		console.log(i)
    

      我们在for in 循环的这一行给了一个分号结束语句,然后打印出来i我们会发现他是class2,现在你大概明白了吧,每一次循环这个i代表的就是json本次循环得到的属性名,他不是代表的一个数组,而是代表一个值。

      3.for in 循环遍历出json里面所有的值

    	var json = {
       		a : 1,
       		b : 2,
       		nam : 'Z',
       		clas2 : '我们的'
       	}
       	for(var i in json){
       		console.log(json[i])
       	}
    

     四、for in循环遍历数组

    var a = [1,2,5,6,777,6,21];
    for(var i in a){
       console.log(i)  //这里打印出来的是所有的下标
       console.log(a[i]) //这里打印出来的是数组里面所有的值
    }
    

     五、遍历json属性到数组

    1.这个里面用到的是每一次用数组的长度来代表他的下标,然后将json里面的属性名遍历到a数组中。

    var json = {
     	a : 1,
     	b : 111,
     	nam : 'z',
     	clas2 : 1
     }
     var a = [];
     for(a[a.length] in json);
     	console.log(a)
    

     2.遍历json的属性的值到数组中

    var json = {
     		a : 1,
     		b : 111,
     		nam : 'z',
     		clas2 : 1
     	}
     	var a = [];
     	for(var i in json){
     		a[a.length] = json[i];
     	}
       	console.log(a)
    

      

    六、判断浏览器是不是IE678

    if(!-[1,]){
        alert('这是ie678');
    }
    

     说出来你可能不信,

    原理

    1.    请你试一下  alert([1,2,].length)浏览器中弹窗的数字是多少

      谷歌 火狐 一些的弹窗都是2,所以后面的那个逗号浏览器判断是不算的

      但是在IE6 7 8 中弹窗出的数字是 3 ,

      所以Number( [1,])这个东西在谷歌,火狐的眼中就是1,但是在IE678心中他就是NaN

    2.  前面的 - 号  隐式转换为Number型

    3 取反 判断内的值为true,所以可以在这里面判断成。

       如果你看到我的文章可以收获一些知识,那么我会非常高兴的。

  • 相关阅读:
    郭大小
    最近翻译的三篇新闻
    又是一年教师节
    PowerDesigner 12.5 反向工程sql server
    Sql Server使用技巧
    一个纠结的silverlight问题
    PowerDesigner 15 使用技巧
    windows2008 + iis7 下载特殊后缀名文件设置方法
    无法读取配置节system.serviceModel因为它缺少节声明的解决方法
    PowerDesigner 15对ACCESS进行反向工程
  • 原文地址:https://www.cnblogs.com/z937741304/p/7751770.html
Copyright © 2011-2022 走看看