当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

javascript编程笔记

作者:小梦 来源: 网络 时间: 2024-06-20 阅读:

1. 快速排序算法

  1. 方法一

function quicksort(n,left,right){  var p;  if(left<right){    p = position(n,left,right);    quicksort(n,left,p-1);    quicksort(n,p+1,right);  }}function position(n,left,right){  var temp = n[left];  while(left<right){    while(left<right&&n[right]>temp)      right--;    if(left<right)      n[left++]=n[right];    while(left<right&&n[left]<temp)      left++;    if(left<right)      n[right--]=n[left];  }  n[left]=temp;  return left;}var a =[50, 32, 11, 16, 32, 24, 99, 57, 100];quicksort(a,0,a.length-1)console.log(a);
  1. 方法二

function quickSort(arr,left,right){  var p;  if(left<right){    p=position(arr,left,right);    quicksort(arr,left,p-1);    quicksort(arr,p+1,right);  }  function position(arr,left,right){    var temp=arr[left];    while(left<right){      while(left<right&&arr[right]>temp) right--;      if(left<right) arr[left++]=arr[right];      while(left<right&&arr[left]<temp) left++;      if(left<right) arr[right--]=arr[left];    }    arr[left] =temp;    return left;  }}

2. 深度克隆clone(继承)

var cloneObj = function(obj){    var str, newobj = obj.constructor === Array ? [] : {};    if(typeof obj !== 'object'){        return;    } else if(window.JSON){        str = JSON.stringify(obj), //系列化对象        newobj = JSON.parse(str); //还原    } else {        for(var i in obj){newobj[i] = typeof obj[i] === 'object' ? cloneObj(obj[i]) : obj[i];         }    }    return newobj;};//测试var obj = {a: 0, b: 1, c: 2};var arr = [0, 1, 2];//执行深度克隆var newobj = cloneObj(obj);var newarr = cloneObj(arr);//对克隆后的新对象进行成员删除delete newobj.a;newarr.splice(0,1);console.log(obj, arr, newobj, newarr);结果: {a: 0, b: 1, c: 2}, [0, 1, 2], {b: 1, c: 2}, [1, 2];*/

3. 找出字符串或者数组中出现相同字符, 并且打印出次数最多的次数和字符

var str = "abcdefgaddda";  var obj = {};  for (var i = 0, l = str.length; i < l; i++) {    var key = str[i];    if (!obj[key]) {      obj[key] = 1;    } else {      obj[key]++;    }  }  var max = -1;  var max_key = "";  var key;  for (key in obj) {    if (max < obj[key]) {      max = obj[key];      max_key = key;    }  }  alert("max:" + max + " max_key:" + max_key);

4. 解析url为json数据格式

function getUrl(url){  //var arr=url.split('?')[1].split('&');   var arr = [];  var a3= [];  arr = url.split("?");  a1 = arr[1];  a2 = a1.split("&");  obj = {};  for(var i=0;i<a2.length;i++){    a3[i] = a2[i].split("=");    obj[a3[i][0]] = a3[i][1];  }return obj;}var url= "URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e";//console.log(getUrl(url));var getjson = function(url) {  var a = [];  var obj = {};  var a = url.split('?')[1].split('&');  for (var i = 0; i < a.length; i++) {    var b[i] = a[i].split('=');    obj[b[i][0]] = b[i][1];  }  return obj;}getjson(url);

5. 通用事件注册函数

var obj = document.getElementById("p");var type = click;function fun() {}function addEvent(obj, type, fun) {  if (obj.addEventListener) {    obj.addEventListener(type, fun, false);  } else if (obj.attachEvent) {    obj.attachEvent("on" + type, fun);  } else {    obj["on" + type] = fun;  }}

6. 写一个获取url中参数的值的函数

function getRequest() {  var url = window.location.search;  var oRequest = new Object();  if (url.indexOf('?') !== -1) {    url = url.substr(1); // 取得?以后的字符串    var reqArr = url.split('&');    for (var i = 0; i < reqArr.length; i++) {      oRequest[(reqArr[i].split('='))[0]] = unescape((reqArr[i].split('='))[1]);    }  }  return oRequest;}

7. JS中的数据类型? 如何断定一个变量是否是String类型

var str = new String("abcd");console.log(typeof str); // objectconsole.log(str instanceof String);console.log(str.constructor == String);console.log(Object.prototype.toString.call(str) === "[object String]"); // truevar str1 = "abcd";console.log(typeof str1); // stringconsole.log(Object.prototype.toString.call(str1) === "[object String]"); // true*/

8. 请实现, 鼠标点击页面中的任意标签, alert该标签的名称.( 注意兼容性)

document.onclick = function(e) {  var e = e || window.event;  var obj = e.target || e.srcElement;  alert(obj.tagName.toLowerCase());}

9. js异步加载的三种解决方案

(1) defer,只支持IE <script type="text/javascript" defer="defer"> alert(document.getElementById("p1").firstChild.nodeValue); </script> (2) async:<script type="text/javascript" src="demo_async.js" async="async"></script> (3) 创建script,插入到DOM中,加载完毕后callBack,见代码:function loadScript(url, callback){    var script = document.createElement("script");    script.type = "text/javascript";    if(script.readyState){//IE        script.onreadystatechange = function(){if(script.readyState == "loaded" ||    script.readyState == "complete"){    script.onreadystatechange = null;    callback();}        };    }else{//firefox,safari,chrome,opera        script.onload = function(){callback();        };    }    script.src = url;    document.body.appendChild(script);}

10. 二分搜索,从数组中找到findvalue

function binarySearch(arr,start,end,findvalue){  var arr = arr.sort(function(a,b){return a-b});  var mid=Math.floor((start+end)/2);  var midvalue = arr[mid];  if(midvalue==findvalue){    return mid;  }else if(findvalue<midvalue){    binarySearch(arr,start,mid-1,findvalue);  }else if(findvalue>midvalue){    binarySearch(arr,mid+1,end,findvalue);  }else{    return -1;  } }

11. javascript保留两位小数

num.toFixed(2);function toDecimal(x) {      var f = parseFloat(x)  if(isNaN(f)){    return false;  }  var f = Math.round(x*100)/100;  var s = f.toString();  var rs = s.indexOf('.');  if(rs<0){    rs=s.length;    s+='.';  }  while(s.length<=rs+2){    s+='0';  }  return s;          }   

12. 编写一个方法 求一个字符串的字节长度;英文占一个, 中文占两个

方法一:function getStrlen(str) {  var len = str.length;  var re = /[\u4e00-\u9fa5]/;  for(var i=0;i<str.length;i++){    if(re.test(str.charAt(i)))      len++;  }  return len;}方法二:function getStrlen(str){  var len= str.length;  for(var i=0;i<str.length;i++){    if(str.charCodeAt(i)>255)      len++;  }  return len;}

13. 编写一个方法 去掉一个数组的重复元素

function delRepeat(arr){  var a = [];  for(var i=0,l=arr.length;i<l;i++){    if(arr.indexOf(arr[i])==i){      a.push(arr[i])    }  }  return a;}

14. JavaScript中如何检测一个变量是一个String类型? 请写出函数实现

typeof(obj) == 'string';obj.constructor == String;obj instanceof String;

15. 鼠标点击页面中的任意标签, alert该标签的名称.( 注意兼容性)

方法一: DOM0级事件document.onclick = function(e){  var e = e||window.event;  var target = e.target || e.srcElement;  console.log(target.tagName.toLowerCase());}方法二: DOM2级事件事件代理function callback(e) {  var e = e || window.event;  var target = e.target || e.srcElement;  console.log(target.tagName);}if (document.addEventListener) {  document.addEventListener('click', callback, false)} else if (document.attachEvent) {  document.attachEvent('onclick', callback)} else {  document['onclick'] = callback;}

热点阅读

网友最爱