国元证券网站(仓库)仓库
编者按:
现在大众号有置顶功用了,咱们把微信更新到最新版别,点开“大数据实验室”大众号。点“置顶大众号”键,就能够置顶了,这样。不论咱们什么时候更新,您都能简略找到。
在这篇文章中,我将共享12个十分有用的Java技巧。这些技巧能够协助你削减并优化代码。
1)运用!!将变量转化成布尔类型
有时,咱们需求查看一些变量是否存在,或许它是否具有有用值,然后将它们的值视为true。关于做这样的查看,你能够运用||(两层否定运算符),它能主动将任何类型的数据转化为布尔值,只要这些变量才会回来false:0,null,"",undefined或NaN,其他的都回来true。咱们来看看这个简略的比如:
functionAccount(cash){
this.cash=cash;
this.hasMoney=!!cash;
}
varaccount=newAccount(100.50);
console.log(account.cash);//100.50
console.log(account.hasMoney);//true
varemptyAccount=newAccount(0);
console.log(emptyAccount.cash);//0
console.log(emptyAccount.hasMoney);//false
在这个比如中,假如account.cash的值大于零,则account.hasMoney的值便是true。
2)运用+将变量转化成数字
这个转化超级简略,但它只适用于数字字符串,否则就会回来NaN(不是数字)。看看这个比如:
functiontoNumber(strNumber){
return+strNumber;
}
console.log(toNumber("1234"));//1234
console.log(toNumber("ACB"));//NaN
这个转化操作也能够作用于Date,在这种状况下,它将回来时刻戳:
console.log(+newDate())//1461288164385
从五万走到几千万的买卖系统,他敢讲你敢听吗?(内附视频)
上课地址:杭州
训练时刻:2017年5月20日09:00—20:00
咨询电话/微信:13061694649
3)短路条件
假如你看到过这种相似的代码:
if(conected){
login();
}
那么你能够在这两个变量之间运用&&(AND运算符)来缩短代码。例如,前面的代码能够减缩到一行:
conected&&login();
你也能够用这种办法来查看目标中是否存在某些特点或函数。相似于以下代码:
user&&user.login();
4)运用||设置默许值
在ES6中有默许参数这个功用。为了在旧版浏览器中模仿此功用,你能够运用||(OR运算符),并把默许值作为它的第二个参数。假如第一个参数回来false,那么第二个参数将会被作为默许值回来。看下这个比如:
functionUser(name,age){
this.name=name||"OliverQueen";
this.age=age||27;
}
varuser1=newUser();
console.log(user1.name);//OliverQueen
console.log(user1.age);//27
varuser2=newUser("BarryAllen",25);
console.log(user2.name);//BarryAllen
console.log(user2.age);//25
5)在循环中缓存array.length
这个技巧十分简略,而且在循环处理大数组时能够防止对功能形成巨大的影响。基本上简直每个人都是这样运用for来循环遍历一个数组的:
for(vari=0;i<array.length;i++){
console.log(array[i]);
}
假如你运用较小的数组,那还好,可是假如处理大数组,则此代码将在每个循环里重复核算数组的巨细,这会发生必定的推迟。为了防止这种状况,你能够在变量中缓存array.length,以便在循环中每次都运用缓存来替代array.length:
varlength=array.length;
for(vari=0;i<length;i++){
console.log(array[i]);
}
为了更简练,能够这么写:
for(vari=0,length=array.length;i<length;i++){
console.log(array[i]);
}
6)检测目标中的特点
当你需求查看某些特点是否存在,防止运转未定义的函数或特点时,这个技巧十分有用。假如你计划编写跨浏览器代码,你也可能会用到这个技能。例如,咱们假定你需求编写与旧版InternetExplorer6兼容的代码,而且想要运用document.querySelector()来经过ID获取某些元素。可是,在现代浏览器中,这个函数不存在。所以,要查看这个函数是否存在,你能够运用in运算符。看下这个比如:
if('querySelector'indocument){
document.querySelector("#id");
}else{
document.getElementById("id");
}
在这种状况下,假如在document中没有querySelector函数,它就会运用document.getElementById()作为替代。
7)获取数组的最终一个元素
Array.prototype.slice(begin,end)能够用来裁剪数组。可是假如没有设置完毕参数end的值的话,该函数会主动将end设置为数组长度值。我以为很少有人知道这个函数能够承受负值,假如你将begin设置一个负数的话,你就能从数组中获取到倒数的元素:
vararray=[1,2,3,4,5,6];
console.log(array.slice(-1));//[6]
console.log(array.slice(-2));//[5,6]
console.log(array.slice(-3));//[4,5,6]
8)数组切断
这个技能能够确定数组的巨细,这关于要删去数组中固定数量的元素是十分有用的。例如,假如你有一个包括10个元素的数组,可是你只想取得前五个元素,则能够经过设置array.length=5来阶段数组。看下这个比如:
vararray=[1,2,3,4,5,6];
console.log(array.length);//6
array.length=3;
console.log(array.length);//3
console.log(array);//[1,2,3]
9)悉数替换
String.replace()函数答应运用String和Regex来替换字符串,这个函数自身只能替换第一个匹配的串。可是你能够在正则表达式结尾增加/g来模仿replaceAll()函数:
varstring="johnjohn";
console.log(string.replace(/hn/,"ana"));//"joanajohn"
console.log(string.replace(/hn/g,"ana"));//"joanajoana"
10)兼并数组
假如你需求兼并两个数组,你能够运用Array.concat()函数:
vararray1=[1,2,3];
vararray2=[4,5,6];
console.log(array1.concat(array2));//[1,2,3,4,5,6];
可是,这个函数关于大数组来说不并适宜,由于它将会创立一个新的数组并耗费很多的内存。在这种状况下,你能够运用Array.push.apply(arr1,arr2),它不会创立一个新数组,而是将第二个数组兼并到第一个数组中,以削减内存运用:
vararray1=[1,2,3];
vararray2=[4,5,6];
console.log(array1.push.apply(array1,array2));//[1,2,3,4,5,6];
11)把NodeList转化成数组
假如运转document.querySelectorAll("p")函数,它会回来一个DOM元素数组,即NodeList目标。可是这个目标并没有一些归于数组的函数,例如:sort(),reduce(),map(),filter()。为了启用这些函数,以及数组的其他的原生函数,你需求将NodeList转化为数组。要进行转化,只需运用这个函数:[].slice.call(elements):
varelements=document.querySelectorAll("p");//NodeList
vararrayElements=[].slice.call(elements);//现在现已转化成数组了
vararrayElements=Array.from(elements);//把NodeList转化成数组的别的一个办法
12)对数组元素进行洗牌
假如要像外部库Lodash那样对数据元素从头洗牌,只需运用这个技巧:
varlist=[1,2,3];
console.log(list.sort(function(){
returnMath.random()-0.5
}));//[2,1,3]
定论
现在,你现已学到了一些有用的JS技巧,它们首要用于减缩Java代码量,其间一些技巧在许多盛行的JS结构都运用到,如Lodash,Underscore.js,Strings.js等。
原文:12ExtremelyUsefulHacksforJava
作者:CaioRibeiroPereira
翻译:雁惊寒
李迅雷(中泰证券首席经济学家):2017年微观战略布局与展望
陈华良(中泰证券金融市场部总经理):组织生意服务晋级展望
申毅(上海申毅出资股份有限公司CEO):智能化革新对证券业的裨益
何波(中泰证券信息技能部副总经理):XTP——为量化而生
马永谙(理财魔方开创合伙人):FOF办理在智能投顾中的运用探究
吴旭华(恒生电子私募事务部总经理):i私募数据服务渠道对fof事务的支撑
张翔(西南财大金融学院金融工程系主任):私募基金基准指数构建与FOF点评
圆桌论坛——主题:FOF财物装备中的量化技能
陆政哲浙江九章(原幻方量化)投研部副总经理
李斌复兴本钱董事长
言程序文起出资办理咨询有限公司总经理
池伊华渤海银行上海分行副行长
郭弘仁歌斐财物办理有限公司董事总经理
观看直播费用:100元
直播时刻:2017年5月21日10:00—15:30
重播时刻:会议完毕后当即开端重播,循环播映至5月22日下午17:30
手机进入直播方法
3.微信付款后能够随时进入直播。
电脑端观看
(经过电脑端进入观看直播,主张在会议开端时再缴费进入,不要提早太早缴费进入)
v.quant-club/watch/848831
将上述网址复制入浏览器可直接付费观看。
特别注意:要用同一个浏览器进入,引荐运用360极速浏览器。
交费后一直到重播完毕都是有用的,随时进出不需求重复交费。
咨询微信:5424567
(请保藏本页面,以便利随时进入直播间)
标签:申毅出资
推荐阅读
-
[中国易贷网]51财来
独身女孩怎样理财好呢?下面为咱们介绍一些合适独身女孩的理财方法。期望对你有协助。一同来看看吧。1、储蓄:现在许多年轻人都习气把钱存...
-
603507_贵人鸟广告
买过房子的朋友应该都清楚,购买房子可不简简单单的便是准备好首付款就能够了,买房子的费用还有很多项,其间修补基金是必不行少的,在进行...
-
中南都电源股票欧的那个基金好(中欧精选基金)
中欧基金怎么样?有哪些基金体现优异?中欧基金是老牌基金办理公司,成立于2006年,2014年完结股权变革之后公司规划和成绩有了更好...
-
华西证券股票(确定性规则)确定性规则
今日给各位共享景顺鼎益的常识,其间也会对景顺鼎益吧进行解说,假如能可巧处理你现在面对的问题,别忘了重视本站,现在开端吧!本文目录一...
-
[沪市股票]全国知名的网贷公司有几家?这十家知名网贷公司一定要知道
靠谱的网贷渠道背面都会有靠谱的网贷公司,因而不少朋友在挑选网贷产品时,会考虑闻名网贷公司旗下的产品,那么全国闻名的网贷公司有几家?...
-
[630011]股票操作数是什么,股票 笔数 是什么意识
1,股票笔数是什么认识手是股票生意的数量的单位,一手即100股,股票生意最少是1手,即100股,但不一定是100的整数倍.2,操作...
-
光大证002253川大智胜券交易手续费(哪家证券公司交易手续费最低)
光大证券生意手续费光大证券生意手续费是光大证券公司为投资者和相关证券公司代理收取的一项费用,意图是协助投资者在做投资决策时防止个人...
-
[tcl公司]资本金资金成本的计算公式为(资金成本和资本成本的定义及区别)
资金本钱与本钱本钱的界说及差异资金本钱和本钱本钱是企业融资和出资中的两个重要概念,它们在实践运用中常常被混杂。简略来说,资金本钱是...
-
[600732]内地银行的股票
①银行类的股票值得购买吗,有哪些好的引荐呢从中长时间来看,银行,值得购买,但主张出资者尽量考虑一些轻视值银行股的成绩支撑,关于一些...
-
新光光电202人民币与美元的汇率0年度拟10派0.8元
...