国元证券网站(仓库)仓库

  编者按:

  现在大众号有置顶功用了,咱们把微信更新到最新版别,点开“大数据实验室”大众号。点“置顶大众号”键,就能够置顶了,这样。不论咱们什么时候更新,您都能简略找到。

  在这篇文章中,我将共享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

  (请保藏本页面,以便利随时进入直播间)

标签:申毅出资

发布于 2023-11-11 06:11:38
收藏
分享
海报
8
目录

    推荐阅读