1.indexOf陣列去重
從陣列中找到相同的元素并洗掉,保證陣列中每一個元素都是獨一無二的操作
基本思想:利用陣列的indexOf()方法,尋找存入引數在陣列中第一次出現的位置,
缺點:實作這個方法的時候,會遍歷陣列直到找到目標元素為止,會消耗很多時間
優點:保證了陣列中元素的唯一性,減少記憶體占用(犧牲時間換空間)
var arr0=[1,2,1,2,3,1,2,3,4];
var arr1=[];
for (var i=0;i<arr0.length;i++){
if (arr1.indexOf(arr0[i])==-1){
arr1.push(arr0[i]);
}
}
console.log(arr1); //回傳結果: [1, 2, 3, 4]
2.hash表陣列去重
基本思想:將已經出現過的元素當做屬性名,存入一個 Object內,下標的參考要比用 indexOf搜索陣列快的多
hash(哈希表),又叫散列值表,是無序的鍵值對集合
缺點:記憶體占用很多,以犧牲空間來換取時間
代碼示例:
var arr0=[1,2,1,2,3,1,2,3,4];
var arr1=[];
var hash={};
for (var i=0;arr0[i]!=undefined;i++){
if (!hash[arr0[i]]){
arr1.push(arr0[i]);
hash[arr0[i]]='yes';
}
}
console.log(arr1); //回傳結果: [1, 2, 3, 4]
console.log(hash); //回傳結果:{1: "yes", 2: "yes", 3: "yes", 4: "yes"}
note:由于陣列檢索時是根據元素下標每次從0開始逐一查找的,因此比較耗時
而Object中存盤的是無序的鍵值對,檢索的演算法快,但是會增加一份資料,多占用記憶體空間
3.冒泡排序(Bubble Sort)
基本思想:依次比較相鄰的兩個數,如果不符合排序規則,則調換兩個數的位置,
這樣一遍比較下來,能夠保證最大或最小的數排在最后一位,
再對最后一位以外的陣列,重復前面的程序,直至全部排序完成,
代碼示例:
<script>
var arrFirst=[1,5,9,52,13,32,27,1,44];
for (var i=1;arrFirst[i]!=undefined;i++) {
for (var j=0;j<arrFirst.length-1;j++){
if (arrFirst[j]<arrFirst[j+1]){
var temp=arrFirst[j];
arrFirst[j]=arrFirst[j+1];
arrFirst[j+1]=temp;
}
}
}
console.log(arrFirst); //回傳結果:(9) [52, 44, 32, 27, 13, 9, 5, 1, 1]
</script>
4.遞回函式
能夠自己呼叫自己的函式稱為遞回函式,
條件:
① 擁有遞回終止(退出)條件
② 遞回能夠執行下去的規則
③ 讓遞回變數向著遞回結束的方向發生改變
代碼示例:
<script>
function factorial(x){
if (x ==1){
return 1;
}else{
return x*factorial(x-1);
}
}
console.log(factorial(10)); //回傳結果:3628800
</script>
5.快速排序
基本思想:① 在資料集中隨意選擇一個基準元素(pivot),
② 所有小于基準的元素都放到基準的左邊,所有大于基準的元素都放到基準的右邊,
③ 對于基準左右兩邊的子集,不斷重復前述兩步驟,直到所有子集只剩下一個元素為止,
代碼示例:
<script>
var targArr=[1,5,9,52,13,32,27,1,44,38,16];
function quickSort(temp){
if (temp.length<=1){
return temp;
}
var pivotIndex=Math.floor(temp.length/2);
var pivot=temp.splice(pivotIndex,1)
var tempLeft=[];
var tempRight=[];
for (var i=0;i<temp.length;i++){
if (temp[i]<=pivot){
tempLeft.push(temp[i]);
}else{
tempRight.push(temp[i]);
}
}
return quickSort(tempLeft).concat(pivot,quickSort(tempRight));
}
console.log(quickSort(targArr)); //(11) [1, 1, 5, 9, 13, 16, 27, 32, 38, 44, 52]
</script>
6.Json語言
Json(JavaScript Object Notation)是一種輕量級的資料互動格式,
Json是一門獨立的語言,是用于存盤和傳輸資料的格式,通常用于服務器向網頁傳輸資料,
Json語言采用了JavaScript的語法,意味著JavaScript中處理Json資料不需要任何特殊的API或工具包,
Json是js物件的字串表現形式,它使用文本表示一個js物件的資訊,本質是字串,
Json與JavaScript是兩門不同的語言!
在js語言中,一切都是物件,因此任何支持的型別都可以通過Json表示,如字串、數字、陣列等,
Json的格式僅僅是一個文本,而文本是可以被任何編程語言讀取和作為資料格式傳輸的,
通俗理解:
Json,就是將前臺的資料(物件、陣列等)轉換成字串發送給后臺,
將后臺回傳的資料(字串)轉換為普通的資料(物件、陣列等),
這樣一個轉換程序,
7.Json決議方法
由于Json內部的執行代碼采用了js 的語法,因此Json對 js 提供的資料處理方法,不需要額外的資料包和API,
兩種資料處理方法:
① JSON .parse(后臺傳輸過來的資料)
反序列化方法(也稱為JSON資料決議,簡稱JSON決議),能夠把JSON字串轉換成JS資料型別,
轉換的時候,如果字串中存在不符合JSON要求的格式,會直接報錯
② JSON .stringgify(要向后臺傳輸的資料)
序列化方法(也稱為JSON資料封裝或資料加密),能夠把JS資料型別轉換成JSON字串,
轉換的時候,如果字串中存在不符合JSON要求的格式,會直接報錯
注意,
JSON在日常開發程序中通常會有兩個地方被用到,一個是發送請求的時候,會將資料封裝成為一個JSON字串;
另一個是在接收請求來的資料的時,使用JSON將資料資訊轉換為可用的資料型別
JSON書寫格式:
① JSON鍵值對是用來保存JS物件的一種方式,和JS物件的寫法大同小異,鍵值對組合中的鍵名要使用""包裹;
② JSON字串統一采用單引號,因此JSON字串內容中如果出現引號,則必須為雙引號,
語法示例:var obj = '{"name":"Lili","age":22,"sex":"female"}';
代碼示例:
<script>
var obj = {
name:"Lili",
age:22,
sex:"female"
};
// JSON封裝
var JsonObj=JSON.stringify(obj);
console.log(JsonObj); //回傳結果:{"name":"Lili","age":22,"sex":"female"}
console.log(typeof JsonObj); //回傳結果:string
// JSON決議
var jsObj=JSON.parse(JsonObj);
console.log(jsObj); //回傳結果:{name: "Lili", age: 22, sex: "female"}
console.log(typeof jsObj); //回傳結果:object
</script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/19525.html
標籤:JavaScript
上一篇:Jquery 選擇器
