#2148
展开↯#2149
				作者:广西南宁市				
				
				一.冒泡排序
二.快速排序
				
				var arr1=[3,9,2,7,0,8,4];
for(var i=0;i<arr1.length;i++){
  for(var j=i+1;j<arr1.length;j++){
    var temp=0;
    if(arr1[i]>arr1[j]){
      temp=arr1[i];
      arr1[i]=arr1[j];
      arr1[j]=temp;
    }
  }
}
alert(arr1);Run code
Cut to clipboard
二.快速排序
var a=[3,5,0,9,2,7,5];
function quickSort(arr){
  var len=a.length;
  if(len<=1) return arr;
  function sort(low,height){
    var pivot=a[low];
    var i=low,j=height,t;
    if(i>j) return false;
    while(i!=j){
      while(a[j]>=pivot&&i<j){
        j--;
      }
      while(a[i]<=pivot&&i<j){
        i++;
      }
      if(i<j){//把比pivot大的换到右边,小的换到左边
        t=a[i];
        a[i]=a[j];
        a[j]=t;
      }
    }
    //此时i和j指向同一个数字,把这个数字和pivot交换
    a[low]=a[i];
    a[i]=pivot;
    //递归:把pivot左边的数进行一次排序,右边的数进行一次排序
    sort(low,i-1);
    sort(i+1,height);
  }
  //调用这个排序的函数
  sort(0,len-1);
  return a;
}
alert(quickSort(a));Run code
Cut to clipboard
				文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-24, 17:48:15  
				
			#2150
				作者:广西南宁市				
				
				javascript数组全排列,数组元素所有组合
				
				function permute(input) {
  var permArr = [],
  usedChars = [];
  function main(input){
    var i, ch;
    for (i = 0; i < input.length; i++) {
      ch = input.splice(i, 1)[0];
      usedChars.push(ch);
      if (input.length == 0) {
        permArr.push(usedChars.slice());
      }
      main(input);
      input.splice(i, 0, ch);
      usedChars.pop();
    }
    return permArr
  }
  return main(input);
};
console.log(permute([5, 3, 7, 1]));Run code
Cut to clipboard
				文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:42:25  
				
			#2152
				作者:广西南宁市				
				
				javascript数据类型理解整理
起因:关于数据类型这块,自己看了很多遍相关的资料,每次查看和实践都有一些体会和理解;但又感到没有理解透,总是差一点,最近又在看这块的内容,加上最近的积累,做个相关笔记
ECMAScript数据类型:
1. 5中简单数据类型:String Number Boolean Undefined Null
2. 1种复杂数据类型:Object,本质是一组无序的名值对组成的,eg:Array JSON ...
【理解】对于JS数据方面的操作,都是数据类型之间的转换和操作,只要针对的攻克每一种数据类型,在逐步的融合,JS水平会有一个很好的进步;
typeof操作符
1. 这是个操作符,不是方法
2. 之所以typeof存在,是因为ECMAScript是松散类型的语言;松散类型就是变量可以是任意数据类型,可以任意转换(不推荐)
一、 Undefined类型
当【声明】一个变量,但是【未初始化】,这个变量的值就是undefined
一直以来的困惑:
1. 对【未初始化】的变量执行typeof操作符,返回undefined值
2. 对【未声明】的变量执行typeof操作符,返回undefined值
困惑:导致自己一直不知道该怎么解决这个问题,书上标注的解决办法是:显式的使用undefined来给没有初始化的变量进行赋值,每次实践的结果和书上说的有出入
感悟:自己刚刚结合了jQuery上的$.type()的工具函数,和自己写的一些例子
所以,无论从$.type()的角度看,验证结果;还是从例子中查看结果,都可以看出,对于【未声明】和【未初始化】分离和验证都不是难题;
【注】对于$.type()的原理实现,是否是我例子中的方法,我还没有验证;当然这不是重点,重点是,妈妈再也不担心我分不清【未声明】和【未初始化】了;
【项目中】在实际的项目中,肯定是不允许有报错行为的,这样大大的影响了程序的进一步运行;所以,用下面这种方式:
二、Null类型
1.从逻辑的角度,null值表示一个空对象指针
2.typeof(null),返回object
3.如果定义的变量未来准备用来保存对象,最好将其初始化成null
只要检测出来不是null就可以进行下一步操作:
if(ele != null){ //要执行的代码 }
4.undefined值是派生自null值,因此:console.log(undefined == null); //true
三、Boolean类型
1.有两个字面量:true and false
2.区分大小写,只有全小写形式,属于Boolean类型,其余的只是标识符
3.转型函数Boolean(),将任意类型的字符转换成Boolean类型
转换规则:
数据类型 => true => false
四、Number类型
1.数值字面量表示方式:十进制、八进制(严格模式不支持,直接报错)、十六进制
八进制:第一位必须是0,然后是八进制数字序列(0~7)
十六进制:前两位必须是0x,后跟十六进制数字序列(0~9及A~F),字母(A~F)大小写都可以
算术计算时:所有以八进制和十六进制表示的数值最终都将被转换成十进制数值
正零 == 负零(+0 == -0)
2.浮点数值
就是数值中包含一个小数点,小数点后必须至少有一位数字
小数点前面可以没有整数,但是不推荐(.1)
保存浮点数值所需的内存空间是保存整数的两倍,所以下面这些浮点数,会当做整数处理
对于极大极小的数值,可以用e表示法(即科学计数法)来表示浮点数值;e前面的数值*10的指数次幂,幂是e后面的数值
默认情况下,ECMAScript会将那些小数点后面带有6个零以上的浮点数值转换成e表示法
浮点数值的最高精度是17位小数,但在进行算数计算时其精确度远远不如整数
【注】浮点数值计算有舍入误差,其它基于IEEE754数值的浮点数计算语言都有这类通病
3.数值范围
由于内存的限制,ECMAScript不能保存世界上所有的数值
最值具体等于多少数值,不同的浏览器有不同的结果,具体以实际为准
数值计算结果超出最值范围,将被自动转换成特殊的正值是Infinity(正无穷)值,负值是-Infinity(负无穷)
判断某个数值是不是有穷数值(是不是位于最小值和最大值之间),可以使用isFinish()函数,结果是有穷的返回true,否则false
Infinity和-Infinity保存只
4.NaN
NaN,即非数值(Not a Number)是一个特殊的数值,当数值计算出现错误的时候,返回NaN,如:任何数除以0会返回NaN,这样不影响其它代码的执行
两个特点:
--- 1.任何涉及NaN的操作(NaN/10)都会返回NaN,这个特性在多步计算中有可能导致问题
--- 2.NaN与任何值都不相等,包括NaN本身
isNaN()函数,这个函数接收一个参数,该参数可以是任何类型;意思是是否【不是数值】
当参数不是数值时,返回true;当参数是数值时,返回false
isNaN()也适用于对象,首先调用对象的valueof()方法=?是否可以转换为数值,如果不能,在调用toString()方法
				起因:关于数据类型这块,自己看了很多遍相关的资料,每次查看和实践都有一些体会和理解;但又感到没有理解透,总是差一点,最近又在看这块的内容,加上最近的积累,做个相关笔记
ECMAScript数据类型:
1. 5中简单数据类型:String Number Boolean Undefined Null
2. 1种复杂数据类型:Object,本质是一组无序的名值对组成的,eg:Array JSON ...
【理解】对于JS数据方面的操作,都是数据类型之间的转换和操作,只要针对的攻克每一种数据类型,在逐步的融合,JS水平会有一个很好的进步;
typeof操作符
1. 这是个操作符,不是方法
2. 之所以typeof存在,是因为ECMAScript是松散类型的语言;松散类型就是变量可以是任意数据类型,可以任意转换(不推荐)
typeof(String) => string => 如果这个值是字符串
typeof(Number) => number => 如果这个值是数值
typeof(Boolean) => boolean => 如果这个值是布尔值
typeof(Undefined) => undefined => 如果这个值未定义
typeof(Object) => object => 如果这个值是对象或null
typeof(Function) => function => 如果这个值是函数Run code
Cut to clipboard
一、 Undefined类型
当【声明】一个变量,但是【未初始化】,这个变量的值就是undefined
一直以来的困惑:
1. 对【未初始化】的变量执行typeof操作符,返回undefined值
2. 对【未声明】的变量执行typeof操作符,返回undefined值
var message;
console.log(typeof message); // undefined
console.log(typeof age); // undefinedRun code
Cut to clipboard
困惑:导致自己一直不知道该怎么解决这个问题,书上标注的解决办法是:显式的使用undefined来给没有初始化的变量进行赋值,每次实践的结果和书上说的有出入
感悟:自己刚刚结合了jQuery上的$.type()的工具函数,和自己写的一些例子
var message;
// jQuery中$.type()工具函数
console.log($.type(message)); // undefined
console.log($.type(age)); // 【报错】age is not defined
// 自己理解写的例子
console.log(message==undefined); // true
console.log(age==undefined); // 【报错】age is not definedRun code
Cut to clipboard
所以,无论从$.type()的角度看,验证结果;还是从例子中查看结果,都可以看出,对于【未声明】和【未初始化】分离和验证都不是难题;
【注】对于$.type()的原理实现,是否是我例子中的方法,我还没有验证;当然这不是重点,重点是,妈妈再也不担心我分不清【未声明】和【未初始化】了;
【项目中】在实际的项目中,肯定是不允许有报错行为的,这样大大的影响了程序的进一步运行;所以,用下面这种方式:
var message;
// jQuery中$.type()工具函数
console.log($.type(message)); // undefined
try{
    console.log($.type(age)); // 不报错了
}catch(e){
    console.log("age is not defined!");
};
// 自己理解写的例子
console.log(message==undefined); // true
try{
    console.log(age==undefined); // 不报错了
}catch(e){
    console.log("age is not defined!");
};Run code
Cut to clipboard
二、Null类型
1.从逻辑的角度,null值表示一个空对象指针
2.typeof(null),返回object
3.如果定义的变量未来准备用来保存对象,最好将其初始化成null
只要检测出来不是null就可以进行下一步操作:
if(ele != null){ //要执行的代码 }
4.undefined值是派生自null值,因此:console.log(undefined == null); //true
console.log(undefined == null); // true
// 从JS角度
console.log(typeof undefined); // undefined
console.log(typeof null); // object
// 从jQuery角度
console.log($.type(undefined)); // undefined
console.log($.type(null)); // nullRun code
Cut to clipboard
三、Boolean类型
1.有两个字面量:true and false
2.区分大小写,只有全小写形式,属于Boolean类型,其余的只是标识符
3.转型函数Boolean(),将任意类型的字符转换成Boolean类型
转换规则:
数据类型 => true => false
String类型 => 任意非空字符串 => ""(空字符串)
Number类型 => => 任意非零数字值(包括无穷大) => 0和NaN
Boolean类型 => true => false
Object类型 => 任意对象 => null
Undefined类型 => n/a(or N/A),意思是不适用(not applicable) => undefinedRun code
Cut to clipboard
四、Number类型
1.数值字面量表示方式:十进制、八进制(严格模式不支持,直接报错)、十六进制
八进制:第一位必须是0,然后是八进制数字序列(0~7)
十六进制:前两位必须是0x,后跟十六进制数字序列(0~9及A~F),字母(A~F)大小写都可以
算术计算时:所有以八进制和十六进制表示的数值最终都将被转换成十进制数值
正零 == 负零(+0 == -0)
2.浮点数值
就是数值中包含一个小数点,小数点后必须至少有一位数字
小数点前面可以没有整数,但是不推荐(.1)
保存浮点数值所需的内存空间是保存整数的两倍,所以下面这些浮点数,会当做整数处理
1. => 1
10.0 => 10Run code
Cut to clipboard
对于极大极小的数值,可以用e表示法(即科学计数法)来表示浮点数值;e前面的数值*10的指数次幂,幂是e后面的数值
3.125e7 == 31250000
0.00000000000000003 == 3e-17Run code
Cut to clipboard
默认情况下,ECMAScript会将那些小数点后面带有6个零以上的浮点数值转换成e表示法
浮点数值的最高精度是17位小数,但在进行算数计算时其精确度远远不如整数
0.1 + 0.2 != 0.3
0.1 + 0.2 != 0.30000000000000004Run code
Cut to clipboard
【注】浮点数值计算有舍入误差,其它基于IEEE754数值的浮点数计算语言都有这类通病
3.数值范围
由于内存的限制,ECMAScript不能保存世界上所有的数值
最小值:Number.MIN_VALUE
最大值:Number.MAX_VALUERun code
Cut to clipboard
最值具体等于多少数值,不同的浏览器有不同的结果,具体以实际为准
数值计算结果超出最值范围,将被自动转换成特殊的正值是Infinity(正无穷)值,负值是-Infinity(负无穷)
判断某个数值是不是有穷数值(是不是位于最小值和最大值之间),可以使用isFinish()函数,结果是有穷的返回true,否则false
var num = Number.MIN_VALUE + Number.MAX_VALUE;
console.log(num); // falseRun code
Cut to clipboard
Infinity和-Infinity保存只
Number.POSITIVE_INFINITY == Infinity
Number.NEGATIVE_INFINITY == -InfinityRun code
Cut to clipboard
4.NaN
NaN,即非数值(Not a Number)是一个特殊的数值,当数值计算出现错误的时候,返回NaN,如:任何数除以0会返回NaN,这样不影响其它代码的执行
两个特点:
--- 1.任何涉及NaN的操作(NaN/10)都会返回NaN,这个特性在多步计算中有可能导致问题
--- 2.NaN与任何值都不相等,包括NaN本身
console.log(NaN == NaN); // falseRun code
Cut to clipboard
isNaN()函数,这个函数接收一个参数,该参数可以是任何类型;意思是是否【不是数值】
当参数不是数值时,返回true;当参数是数值时,返回false
console.log(isNaN("10")); // false
console.log(isNaN("blue")); //trueRun code
Cut to clipboard
isNaN()也适用于对象,首先调用对象的valueof()方法=?是否可以转换为数值,如果不能,在调用toString()方法
				文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:33:54  
				
			#2153
				作者:广西南宁市				
				
				平年闰年判断
				
				function isLeapYear(year){ 
return (new Date(year,2,0)).getDate()==29;
}Run code
Cut to clipboard
				文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:17:19  
				
			#2154
				作者:广西南宁市				
				
				确定天数
				
				function sureDay(year,month){
return (new Date(year,month,0)).getDate()
}Run code
Cut to clipboard
				文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:16:48  
				
			#2155
				作者:广西南宁市				
				
				JS数组元素排列组合
				
				function permutate(array,permutatedArray){
 if(!permutatedArray){
  permutatedArray = [];
 }
 
 if(array.length > 1){
  //弹出第一个数
  var elementCur = array.shift();
  
  //排列剩余的数组
  permutate(array,permutatedArray);
  
  //返回剩余的数组的排列长度
  var permutatedArrayLen = permutatedArray.length;
  //第一个数与其他剩余数组所有数组组合
  for(var j = 0;j < permutatedArrayLen; j++){
   //弹出不齐的组
   var p = permutatedArray.shift();
   
   //把当前元素放到排列好的数组的所有位置
   for(var i = 0; i <= p.length; i++){
    //复制排列好的数组
    var r = p.slice(0);
    
    //插入数据到数组的位置
    r.splice(i, 0, elementCur);
    
    //保存
    permutatedArray.push(r)
   }
  }
 
  //退出条件 
 }else{
  permutatedArray.push([array[0]]);
 }
 
 return permutatedArray;
}Run code
Cut to clipboard
				文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:16:05  
				
			#2156
				作者:广西南宁市				
				
				js字符串转换成数字
parseInt(string) : 函数从string的开始解析,返回一个整数。
如果解析不到数字,则将返回一个NaN的值,可以用isNaN()函数来检测;
同样的parseFloat函数是将字符串转换成浮点数。
举例:
js数字转换成字符串
将字符串转换成数字,得用到String类的toString方法
 
js数字与字符串的区别
js的数字的加法与字符串的连接都是 + 符号, 所以究竟是加还是字符串的连接就取决与变量的类型。
 
如果从html页面元素得到的值,想按数字加,就需要先转换为数字,因为从页面得到的值默认是字符串。
				parseInt('123') : 返回 123(int);
     parseInt('1234xxx') : 返回 1234(int);Run code
Cut to clipboard
parseInt(string) : 函数从string的开始解析,返回一个整数。
如果解析不到数字,则将返回一个NaN的值,可以用isNaN()函数来检测;
var i = parseInt('abc');
 if (isNaN(i))
 {
    alert('NaN value');
 }Run code
Cut to clipboard
同样的parseFloat函数是将字符串转换成浮点数。
举例:
parseFloat('31.24abc') : 返回 31.24;Run code
Cut to clipboard
js数字转换成字符串
将字符串转换成数字,得用到String类的toString方法
var i = 10;
var s = i.toString();
alert(typeof s);     //将输出 StringRun code
Cut to clipboard
js数字与字符串的区别
js的数字的加法与字符串的连接都是 + 符号, 所以究竟是加还是字符串的连接就取决与变量的类型。
var a = 'abc' + 'xyz';    //a的值为:abcxyz,字符串与字符串是连接
var a = 10 + 5;           //a的值为:15,数字是加
var a = 'abc' + 10;       //a的值为:abc10,字符串与数字,自动将10转换成字符串了
var a = 'abc' + 10 + 20 + 'cd';  //a的值为:abc1020cd
var a = 10 + 20 + 'abc' + 'cd';  //a的值为:30abccd,可以数字加的先数字加,然后再连接Run code
Cut to clipboard
如果从html页面元素得到的值,想按数字加,就需要先转换为数字,因为从页面得到的值默认是字符串。
				文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:14:56  
				
			#2157
				作者:广西南宁市				
				
				Google方程式 WWWDOT – GOOGLE = DOTCOM
前端语言 浏览器 JavaScript算法
				
				前端语言 浏览器 JavaScript算法
<script>
var mycars = new Array()
//加x元素保证有0-9个数字
mycars[0] = "w"
mycars[1] = "d"
mycars[2] = "o"
mycars[3] = "t"
mycars[4] = "g"
mycars[5] = "l"
mycars[6] = "e"
mycars[7] = "c"
mycars[8] = "m"
mycars[9] = "x"
permutate(mycars);
function sff(s,v){
	var u=s.indexOf(v);
	if(u!='-1') return u.toString();
	else return false;
}
function permutate(array,permutatedArray){
 if(!permutatedArray){
  permutatedArray = [];
 }
 
 if(array.length > 1){
  //弹出第一个数
  var elementCur = array.shift();
  
  //排列剩余的数组
  permutate(array,permutatedArray);
  
  //返回剩余的数组的排列长度
  var permutatedArrayLen = permutatedArray.length;
  //第一个数与其他剩余数组所有数组组合
  for(var j = 0;j < permutatedArrayLen; j++){
   //弹出不齐的组
   var p = permutatedArray.shift();
   
   //把当前元素放到排列好的数组的所有位置
   for(var i = 0; i <= p.length; i++){
    //复制排列好的数组
    var r = p.slice(0);
    
    //插入数据到数组的位置
    r.splice(i, 0, elementCur);
    
    //保存
    permutatedArray.push(r)
	//console.log(r);return false;
	if(r.length==10) {
		var w=sff(r,'w');
		var d=sff(r,'d');
		var o=sff(r,'o');
		var t=sff(r,'t');
		var g=sff(r,'g');
		var l=sff(r,'l');
		var e=sff(r,'e');
		var c=sff(r,'c');
		var m=sff(r,'m');
		//WWWDOT – GOOGLE = DOTCOM
		var wwwdot=parseInt(w+w+w+d+o+t);
		var google=parseInt(g+o+o+g+l+e);
		var dotcom=parseInt(d+o+t+c+o+m);
		var nnnwwwwdot=google+dotcom;
		if(wwwdot==nnnwwwwdot){
			console.log(wwwdot+'='+google+'+'+dotcom);
			//return true;
		}
		
	}
	//console.log(r);
   }
  }
 
  //退出条件 
 }else{
  permutatedArray.push([array[0]]);
 }
 
 return permutatedArray;
}
</script>Run code
Cut to clipboard
				文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:12:16  
				
			#2158
				作者:广西南宁市				
				
				单单看到这样的百度就让人觉得惋惜,就好像看到一位江湖高手退缩在墙角,被一位手拿树枝的小朋友鞭打。而他本可以去做更有意义的事。 				
				
				文章:认真的反思是首先假定自己错了,而不是找个理由证明自己是无辜的  发表时间:2016-09-23, 10:32:07  
				
			#2159
				作者:广西南宁市				
				
				jquery 回车事件
简单地记下jquery实现回车事件,代码如下:
全局:
某个控件:
如果想模拟Tab键,只要写成    就行了,它会跳到另一个元素上。				
				简单地记下jquery实现回车事件,代码如下:
全局:
$(function(){
document.onkeydown = function(e){ 
    var ev = document.all ? window.event : e;
    if(ev.keyCode==13) {
           $('#FormId).submit();//处理事件
     }
}
});  
Run code
Cut to clipboard
某个控件:
$('#id').keydown(function(e){
if(e.keyCode==13){
   $('#FormId).submit(); //处理事件
}
});
if (window.event.keyCode==13) window.event.keyCode=0   //这样就取消回车键了Run code
Cut to clipboard
如果想模拟Tab键,只要写成
if (window.event.keyCode==13) window.event.keyCode=9Run code
Cut to clipboard
				文章:常用html、demo代码  发表时间:2016-09-22, 16:03:11  
				
			#2163
				作者:广西南宁市				
				
				虽然自己只是一个高中生 但当过一年半的社长 感觉办活动的时候最害怕的就是执行 很害怕得罪人又担心其实不够别人说三道四 最后解决问题四个字很很实在很精辟 对 
感谢这篇文章作者
				learn by doing
说明你在工作中总爱寻求别人的认同感,这样会使你失去主动权,不如学会放下,让自己变成想要成为的样子,而不是他人认为的样子,或许你会收获到快乐和幸福!感谢这篇文章作者
				文章:成功的故事只能倒叙着讲  发表时间:2016-09-19, 11:43:09  
				
			#2164
展开↯#2165
				作者:广西南宁市				
				
				个人觉得格局的大小,和一个人的穷富是没有直接关系的。格局也未必就等于见识,它会受外界的影响,但归根还是由内体现出来的东西。				
				
				文章:需要人在深夜痛哭的努力,往往是最为糟糕的  发表时间:2016-09-19, 11:19:56  
				
			
js中最常见的框
//弹出对话框并输出一段提示信息 function ale() { //弹出一个对话框 alert("提示信息!"); }//弹出一个询问框,有确定和取消按钮 function firm() { //利用对话框返回的值 (true 或者 false) if (confirm("你确定提交吗?")) { alert("点击了确定"); } else { alert("点击了取消"); } }//弹出一个输入框,输入一段文字,可以提交 function prom() { var name = prompt("请输入您的名字", ""); //将输入的内容赋给变量 name , //这里需要注意的是,prompt有两个参数,前面是提示的话,后面是当对话框出来后,在对话框里的默认值 if (name)//如果返回的有内容 { alert("欢迎您:" + name) } }