用 React.js+Egg.js 造轮子 全栈开发旅游电商应用

download: 用 React.js+Egg.js 造轮子 全栈开发旅游电商应用


取数组中的最小值和最大值
var arr = new Array();
arr[0] = 100;
arr[1] = 0;
arr[2] = 50;

var min = Math.min.apply(null, arr),
max = Math.max.apply(null, arr);
十三、取两个数组交集
/* finds the intersection of

  • two arrays in a simple fashion.
  • PARAMS
  • a - first array, must already be sorted
  • b - second array, must already be sorted
  • NOTES
  • Should have O(n) operations, where n is
  • n = MIN(a.length(), b.length())
    */
    function arrayIntersection(a, b)
    {
    var ai=0, bi=0;
    var result = new Array();

    while( ai < a.length && bi < b.length )
    {
    if (a[ai] < b[bi] ){ ai++; }
    else if (a[ai] > b[bi] ){ bi++; }
    else / they're equal /
    {
    result.push(a[ai]);
    ai++;
    bi++;
    }
    }

    return result;
    }

console.log(arrayIntersection([1,2,3],[2,3,4,5,6]));//[2,3]
注释中已经说明了,传入的数组要已经排过序的。 十四、统计一个字符串中某段子串出现的次数
var temp = "This is a string.";

var count = temp.match(/is/g).length;
十五、方法返回多个值
//One
var mValues= function(){
var a ="a";
var b = "b";
return [a, b];
};

var values= mValues();
var valOne= values[0];
var valTwo = values[1];

//Two
var mValues= function(){
var a= "a";
var b = "b";
return {
'a': a,
'b': b
};
};

var values= mValues();
var valOne= values.a;
var valTwo = values.b;
十六、Array迭代器
function createIterator(x) {
var i = 0;

 return function(){
   return x[i++];
};

}

var iterator=createIterator(['a','b','c','d','e','f','g']);
var current;
while(current=iterator())
{
console.log(current);
}
注意,如果数组中有0、false、""、null、NaN迭代器将会停止。 十七、根据日计算年龄
function getAge(dateString) {
var today = new Date();
var birthDate = new Date(dateString);
var age = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}
console.log(getAge("2005,8,1"));//6
十八、判断当前页面是否被放入了iframe中
if(self==top){
//not in iframe
}else{
//in iframe
}
这段代码可以用来防止网页被放入iframe中,不过如果别人定义了self和top变量覆盖了浏览器默认值可能会失效。 十九、把arguments转换为Array
var args = Array.prototype.slice.call(arguments, 0);
二十、日期格式化 来源:javascript日期格式化函数,跟C#中的使用方法类似
Date.prototype.toString=function(format,loc){
var time={};
time.Year=this.getFullYear();
time.TYear=(""+time.Year).substr(2);
time.Month=this.getMonth()+1;
time.TMonth=time.Month<10?"0"+time.Month:time.Month;
time.Day=this.getDate();
time.TDay=time.Day<10?"0"+time.Day:time.Day;
time.Hour=this.getHours();
time.THour=time.Hour<10?"0"+time.Hour:time.Hour;
time.hour=time.Hour<13?time.Hour:time.Hour-12;
time.Thour=time.hour<10?"0"+time.hour:time.hour;
time.Minute=this.getMinutes();
time.TMinute=time.Minute<10?"0"+time.Minute:time.Minute;
time.Second=this.getSeconds();
time.TSecond=time.Second<10?"0"+time.Second:time.Second;
time.Millisecond=this.getMilliseconds();
time.Week=this.getDay();

var MMMArrEn=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var MMMArr=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];
var WeekArrEn=["Sun","Mon","Tue","Web","Thu","Fri","Sat"];
var WeekArr=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];

var oNumber=time.Millisecond/1000;

if(format!=undefined && format.replace(/s/g,"").length>0){
    if(loc!=undefined && loc =="en"){
        MMMArr=MMMArrEn.slice(0);
        WeekArr=WeekArrEn.slice(0);
    }
    format=format
        .replace(/yyyy/ig,time.Year)
        .replace(/yyy/ig,time.Year)
        .replace(/yy/ig,time.TYear)
        .replace(/y/ig,time.TYear)
        .replace(/MMM/g,MMMArr[time.Month-1])
        .replace(/MM/g,time.TMonth)
        .replace(/M/g,time.Month)
        .replace(/dd/ig,time.TDay)
        .replace(/d/ig,time.Day)
        .replace(/HH/g,time.THour)
        .replace(/H/g,time.Hour)
        .replace(/hh/g,time.Thour)
        .replace(/h/g,time.hour)
        .replace(/mm/g,time.TMinute)
        .replace(/m/g,time.Minute)
        .replace(/ss/ig,time.TSecond)
        .replace(/s/ig,time.Second)
        .replace(/fff/ig,time.Millisecond)
        .replace(/ff/ig,oNumber.toFixed(2)*100)
        .replace(/f/ig,oNumber.toFixed(1)*10)
        .replace(/EEE/g,WeekArr[time.Week]);
}
else{
    format=time.Year+"-"+time.Month+"-"+time.Day+" "+time.Hour+":"+time.Minute+":"+time.Second;
}
return format;

}

var d=new Date();
console.log(d.toString()); //2012-7-27 9:26:52
console.log(d.toString("")); //2012-7-27 9:26:52
console.log(d.toString("yyyy-MM-dd HH:mm:ss")); //2012-07-27 09:26:52
console.log(d.toString("yyyy年MM月dd日 HH:mm:ss")); //2012年07月27日 09:26:52
console.log(d.toString("yyyy-MM-dd HH:mm:ss fff")); //2012-07-27 09:26:52 237
console.log(d.toString("yyyy年 MMM dd EEE")); //2012年 七月 27 星期五
console.log(d.toString("yyyy MMM dd EEE","en")); //2012 Jul 27 Fri
二十一、JavaScript正则中test小用法
var str="a12b123c1234e12345";
var reg=/a(d{2})b(d{3})c(d{4})/;
reg.test(str);
console.log(RegExp.$1,RegExp.$2,RegExp.$3,RegExp.$4);
// output:12 123 1234
二十二、JavaScript判断浏览器类型及主版本
function getBrowserInfo(){
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
if (window.ActiveXObject){
Sys.b="ie";
Sys.v =parseInt(ua.match(/msie ([d.]+)/)[1]);
}
else if (document.getBoxObjectFor){
Sys.b="firefox";
Sys.v =parseInt(ua.match(/firefox/([d.]+)/)[1]);
}
else if (window.MessageEvent && !document.getBoxObjectFor){
Sys.b="chrome";
Sys.v == parseInt(ua.match(/chrome/([d.]+)/)[1]);
}
else if (window.opera){
Sys.b="opera";
Sys.v == parseInt(ua.match(/opera.([d.]+)/)[1]);
}
else if (window.openDatabase){
Sys.b="safari";
Sys.v == parseInt(ua.match(/version/([d.]+)/)[1]);
}
return Sys;

猜你喜欢

转载自blog.51cto.com/15146512/2672232