11月22日
Ajax 是什麼? 如何建立一個 Ajax
(1) 含義 ajax 的全稱:Asynchronous Javascript And XML。非同步傳輸+js+xml。所謂非同步,在這裡 簡單地解釋就是:向伺服器傳送請求的時候,我們不必等待結果,而是可以同時做其他的事情,等 到有了結果它自己會根據設定進行後續操作,與此同時,頁面是不會發生整頁重新整理的,提高了使用者 體驗。
(2)建立步驟 1) 建立 XMLHttpRequest 物件,也就是建立一個非同步呼叫物件 2) 建立一個新的 HTTP 請求,並指定該 HTTP 請求的方法、URL 及驗證資訊 3) 設定響應 HTTP 請求狀態變化的函式 4) 傳送 HTTP 請求 5) 獲取非同步呼叫返回的資料 6) 使用 JavaScript 和 DOM 實現區域性重新整理
JS陣列去掉重複元素
JS陣列去掉重複元素,這裡提供3中寫法。
var arr =[1,2,3,4,5,6,3,4,7,2,4,1,8];
輸出:[1,2,3,4,5,6,7,8];
1.使用indexOf()
arr.indexOf(a,b)這個方法是查詢a在arr中首次出現的位置(b這個引數規定了在arr中開始檢索的位置,可寫可不寫,不寫的話檢索位置為0).
利用這個方法來判斷新陣列中是否出現過這個元素,如果新陣列中沒有這個元素,那麼把元素新增到新陣列中,如果新陣列中已經有這個元素了那就不進行操作,遍歷之後得到的新陣列即為所求。
1 <script> 2 var arr = [1,2,3,4,5,6,3,4,7,2,4,1,8];//原陣列 3 var newArr = [];//定義一個新陣列來接收元素 4 5 for(var i = 0;i<arr.length;i++){ 6 //判斷newArr中是否有arr[i]這個元素,如果返回結果為-1(<0)證明新陣列newArr中沒有這個元素,則把元素新增到新陣列中 7 if(newArr.indexOf(arr[i])<0){ 8 newArr.push(arr[i]); 9 } 10 } 11 12 console.log(newArr); 13 14 </script>
2.不新增新陣列的比較
將陣列中前一個元素與後面剩下的元素依次進行比較,如果發現兩個元素相同,則刪除後面的元素。
這裡會用到arr.splice(index,n);這個方法是刪除陣列中的某個元素,刪除下標為index的元素,刪除n位
<script> var arr = [1,2,3,4,5,6,3,4,7,2,4,1,8]; for(var i = 0;i<arr.length-1;i++){//遍歷獲取“前一個元素”,最後一個數不用獲取,它本身已經被前面所有元素給排除過了 for(var j = i+1;j<arr.length;j++){//遍歷獲取剩下的元素,“後一個元素”的起始索引就是“前一個元素”的索引+1 if(arr[i] == arr[j]){//如果“前一個元素”與後面剩下的元素之一相同,那麼就要刪除後面的這個元素 arr.splice(j,1); j--;//如果刪除了這個元素,那麼後面的元素索引值就會發生改變,所以這裡的j需要-1 } } } console.log(arr); </script>
3.使用空物件比較
這個方法相對來說比較麻煩,是我前幾天學習物件的時候寫的方法,主要就是利用物件的屬性和屬性值來判斷這個物件中是否存在這個屬性,如果存在這個屬性那麼就把這個元素在陣列中刪除當中。
把陣列的元素給物件當成屬性,物件中沒有這個屬性,那麼就新增這個屬性並給屬性一個屬性值,如果這個物件中有這個屬性那麼就刪除這個陣列的元素。
<script> var obj = {}; for(var i = 0;i<arr.length;i++){ var o = arr[i];//將陣列中的元素給物件 if(obj[o] == undefined){//obj[o]取物件中屬性為o的屬性,如果沒有這個屬性則會返回undefined //可以判斷obj這個物件中有沒有這個屬性 obj[o] = 1; }else{ arr.splice(i,1); } } console.log(arr); </script