冒泡排序
var arr = [5,8,3,6,9] for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){ var temp temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } console.log(arr)
//temp是中間變量,把要交換的第一個元素arr[j]賦值給中間變量,也是把第一個元素存儲起來
//第二個元素賦值給第一個元素,因為第一個元素我們已經存儲在中間變量中了,所以我們不用擔心它的值會被覆蓋掉
//temp存儲了第一個元素的值,把它賦值給第二個元素,就是把第一個元素賦值給第二個元素了,到這一步,兩個元素已經交換位置了
編程實現IndexOf方法
var brr=[5,9,6,3,2,5]; function indexfun(arr,val){ for(var i=0;i<arr.length;i++){ if(arr[i]==val){ return i; } } return -1; } console.log(indexfun(brr,13));
寫一個方法實現parseInt函數 將字符串轉化成整型
function _parseInt(str, radix) { let str_type = typeof str; let res = 0; if (str_type !== 'string' && str_type !== 'number') { // 如果類型不是 string 或 number 類型返回NaN return NaN } // 字符串處理 str = String(str).trim().split('.')[0] let length = str.length; if (!length) { // 如果為空則返回 NaN return NaN } if (!radix) { // 如果 radix 為0 null undefined // 則轉化為 10 radix = 10; } if (typeof radix !== 'number' || radix < 2 || radix > 36) { return NaN } for (let i = 0; i < length; i++) { let arr = str.split('').reverse().join(''); res += Math.floor(arr[i]) * Math.pow(radix, i) } return res; }
編寫一個函數,將url后的參數串解析成hash形式的對象、
var url = "http://www.taobao.com/index.php?key0=0&key1=1&key2=2..."; var obj = parseQueryString(url); console.log(obj) function parseQueryString(argu){ var str = argu.split('?')[1]; var result = {}; var temp = str.split('&'); for(var i=0; i<temp.length; i++){ var temp2 = temp[i].split('='); result[temp2[0]] = temp2[1]; } return result; }
將首字母大寫
function titleCase(str){ var a = str.toLowerCase().split(' '); var b = a.map(function(val){return val.replace(val.charAt(0),val.charAt(0).toUpperCase())}) return b.join(' '); }
求二維數組所有數的和(封裝函數)
function sum(arr){ var total=0; for(var i=0;i<arr.length;i++){ for(var j=0;j<arr[i].length;j++){ total+=arr[i][j] } } return total; }
編寫一個方法 求一個字符串的字節長度
假設:
一個英文字符占用一個字節,一個中文字符占用兩個字節
function GetBytes(str){ var len = str.length; var bytes = len; for(var i=0; i<len; i++){ if (str.charCodeAt(i) > 255) bytes++; } return bytes; } alert(GetBytes("你好,as"));
編寫一個方法 去掉一個數組的重復元素
var arr = [1 ,1 ,2, 3, 3, 2, 1]; Array.prototype.unique = function(){ var ret = []; var o = {}; var len = this.length; for (var i=0; i<len; i++){ var v = this[i]; if (!o[v]){ o[v] = 1; ret.push(v); } } return ret; }; alert(arr.unique());
千分符
var str2=46548978911; function qianff(str){ var strn=str.toString(), len=strn.length, ind=len%3, //console.log(strn) newstr=strn.substr(0,ind); console.log(newstr); if(ind==0){ newstr=strn.substr(0,3); ind=3; //console.log(newstr); } for(i=ind;i<len;i=i+3){ newstr+=","+strn.substr(i,3); } return newstr; } console.log(qianff(str2))
快速排序
function quickSort(arr){ //如果數組<=1,則直接返回 if(arr.length<=1){return arr;} var pIndex=Math.floor(arr.length/2); //找基准,並把基准從原數組刪除 var result=arr.splice(pIndex,1); //定義左右數組 var left=[]; var right=[]; //比基准小的放在left,比基准大的放在right for(var i=0;i<arr.length;i++){ if(arr[i]<=result){ left.push(arr[i]); } else{ right.push(arr[i]); } } //遞歸 return quickSort(left).concat(result,quickSort(right)); } console.log(quickSort([1,89,56,4,2,2]))
輸出執行順序:
Promise代碼then之前的代碼會立即執行。
then之后會放入微任務執行
then里邊的代碼是回調
交給異步模塊處理
未完待續>>>
溫故而知新~