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,所以可以在這里面判斷成。

 

   如果你看到我的文章可以收獲一些知識,那么我會非常高興的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM