专职C++

不能停止的脚步

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

常用链接

留言簿(28)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

#

数组的解构与函数变参

解构

es6新增了一个解构功能,如下所示

let [aa,bb,cc]= [1,2,3]; 
console.log(aa,bb,cc);
//显示为1 2 3
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

也就是将右边数组的元素依次赋值给左边数组列表中变量 .

  • 也可以是已经定义好的变量
let aa,bb,cc; 
[aa,bb,cc] = [1,2,3];
  • 1
  • 2
  • 1
  • 2
  • 可跳过,一些变量
let [aa,,cc] = [1,2,3];
  • 1
  • 1
  • 可少于变量数量
let [aa,bb,cc] = [1,2];   //cc===undefined; 
//或let [aa,bb,cc] = [1,,3]; //bb===undefined;
  • 1
  • 2
  • 1
  • 2
  • 也可以用于函数返回多值
function mmm(v) {     
if(v=== true) {
return [true,1,2,3];
}
else{
return [false];
}
}
let [result,bb,cc,dd] = mmm(true);
if(result) {
console.log(bb,cc,dd);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

这个和lua的多值返回一样的效果.可以简化一些函数返回处理

变量 操作符…

对于函数变量,es2015增加了操作符…,实际上也是数组,大大简化了变参的操作. 
对于参数名称,建议使用默认的args 
- 常见使用

function sum(…args) {
let r = 0;
for(let i = 0; i < args.length; i++) {
r += args[i];
}
return r;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 再调变参函数
function printLog(…args) {
console.log(…args); //这一步大大简化了,如果是ES5那就头痛了.要用arguments,
}
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • 还可以很轻松的扩展参数
function printLog(…args) {
console.log("专有前缀",…args,"专有后缀");
}
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • 因为…args是一个数组,也就是它可以用数组的方法操作.
function printLog(...args) {
for(let i = 0; i < args.length; i++) {
console.log(args[i]);
}
args.push("end");
console.log(...args);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 用…还可以将数组插入的新数组中去,
let u = [1,2,3]; 
let u1 = […u,4,5];
console.log(u1); //显示为[1,2,3,4,5];
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

后记

到此,所有数组和相关笔记就没有了,期待Node.js能完整支持es6,省得用babel再编译了.再复杂的东西,都是由最简单的元素组成.如果忽视最简单的元素,就像JavaScript中的let,const,for,数组等,如果不能充分的理解和使用,你所的”高深代码”能好到哪里去呢?

posted @ 2017-03-29 17:09 冬瓜 阅读(1469) | 评论 (0)编辑 收藏

     摘要: 前面一篇,我们写了数组的基础,在这里则会把主要的方法和应用列出来.
对于迭代方法和归并方法只是一个简化代码的作用,可能这些方法功能非常见,所以干脆默认提从了这两组方法。对于js的数组,使用起来非常方法,相比c/c++真是无与伦比…。在C++11标准后,也可以同样提供一个强大的动态数组。但是js的数组,可以存放任何元素,这个是C++不能比的,虽然可以实现,但是代价就有点大了。相对来说,现在版本的java和C#,则可以。因为java所有的都是Object…  阅读全文
posted @ 2017-03-07 18:03 冬瓜 阅读(1461) | 评论 (0)编辑 收藏

Array 类型恐怕是 ECMAScript 中最常用的类型了。而且,ECMAScript 中的数组与其他多数语<言中的数组有着相当大的区别。
虽然 ECMAScript 数组与其他语言中的数组都是数据的有序列表,但与其他语言不同的是,ECMAScript 数组的每一项可以保存
任何类型的数据。也就是说,可以用数组的第一个位置来保存字符串,用第二位置来保存数值,用第三个位置来保存对象,以此
类推。而且,ECMAScript 数组的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据。算是万能的容器.

JS中的数组还有很多功能,这篇先讲讲基础

创建数组

用new方法

下面是一组用new Array创建数组,实际上,也可以不用new,直接使用Array也是一样的

1: let a = new Array(); //这里创建了一个没有元素的空数组 
2: let a = new Array(10); //这里创建了元素个数为20的数组
3: let a = new Array(1,2,3,"aaaa"); //这里创建指定数组元素的数组
//等同于
1: let a = Array(); //这里创建了一个没有元素的空数组
2: let a = Array(10); //这里创建了元素个数为20的数组
3: let a = Array(1,2,3,"aaaa"); //这里创建指定数组元素的数组
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

用[]

下面是一组用[]创建数组的办法,多数用这种方法比较简洁

4:let a = []; //创建一个空数组 
5:let a=[1,2,3,"aaa"];//指定元素列表的创建数组
6:let a = [1,,2];//指定元素列表,但是会跳过若干元素创建数组 //跳过的部分为#ff0000
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

length属性

对于数组的长度,用属性length可以获得


可以通过设置该值,来改变数组的大小 
也可以能过下标设置,如

let a = [1,2,3]; 
a[10]=99;
console.log(a);
//结果为[ 1, 2, 3, , , , , , , , 99 ],也就是在没有的位置插入了undefined
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

[下标]访问

用[下标]的方式,可以访问数组的元素 
例:

let a=[3,2,1]; 
for(let i = 0; i < a.length; i++){
console.log(a[i]);
}
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

如果对数组越办访问,得到的将是undefined,

数组遍历方法:

//方法一 
let a = [1,2,3,4,5];
for(let i in a){
console.log(a[i]);
}
//方法二
for(let e of a){
console.log(e);
}
//方法三
for(let i = 0; i < a.length; i++) {
console.log(a[i]);
}
//方法四
a.forEach((e)=>{
console.log(e);
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

四个执行结果是一样的.

判断是否为数组

let a = [1,2,3,45]; 
let b = 1129;
console.log(Array.isArray(a),Array.isArray(b));
//显示为true false
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

将数组变成字符串

数组的toString,toLocaleString会生成以逗号分隔的元素列表的字符串toString会调用每个元素的toString 而toLocalString则会调用每个元素的toLocalSetring方法. 
join方法,则会以toString生成字符串,但是分隔符是参数中指定的,而不是默认的逗号

let a=[1,2,3]; 
let b = a.join("A");
//结果b="1A2A3";
let c = a.toString();
//c='1,2,3'
let d = a.toLocaleString();//d='1,2,3'
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

基础篇先到这里

posted @ 2017-03-03 14:24 冬瓜 阅读(1519) | 评论 (0)编辑 收藏

     摘要: 因为有注册到Embarcadero,所以还能常常收到Embarcadero邮件。告诉我现在是10.1.2版本了

以前还申请过免费的序列号,但是就一直没有用过。Delphi/C++Builder太大了,几十个G,看到我弱小的C盘,

只好放弃了,以前还会安装2010版本的,有空拿来做一下工具,现在都好久没有安装了。

好怀念当年的Turbo C!  阅读全文
posted @ 2017-02-28 10:31 冬瓜 阅读(1539) | 评论 (0)编辑 收藏

     摘要: cppblog人气真不行了,目前只有我和eryar两个人在发博!!!虽然暂时没有搞C++了,但是其他人呢?各位来点人气  阅读全文
posted @ 2017-02-27 19:44 冬瓜 阅读(1929) | 评论 (2)编辑 收藏

     摘要: 注:关于node-heapdump请看 使用node heapdump

基于appium源码 1.6.3 运行,发现运行一段时间后,会出现内存溢出.
用node-heapdump生成heap快照 发现多了很多字符串对象:内容如下  阅读全文
posted @ 2017-02-23 20:35 冬瓜 阅读(1950) | 评论 (0)编辑 收藏

     摘要: 在使用appium的过程中,发现有内存泄露,最后就process out of memory了,就挂了
网上用使用增加运行内存的方式(还是抗不住),没办法,就只好找出内存泄露的地方了
对node.js很多文章,都是说用memwatch,结果发现,这个是一个死项目,有四年没有更新过了,在现有的环境下,是没有办法编译的。
然后又有一个memwatch-next,顾名思义,就是memwatch的下一个版本,结果是果然也可以编译,一些事件也支持,但是要headdump后要end后,就挂了。
国内,用百度,你一万年都别想解决问题,估计找成人不宜的东西,百度世界第一名,google也不比过百度。  阅读全文
posted @ 2017-02-23 14:28 冬瓜 阅读(2477) | 评论 (0)编辑 收藏

     摘要: 这里是基于node的xmldom上扩展的工具,在使用appium的时候,常常需要用source功能来分析当前上下文,所以扩展了若干函数,用于分析。这些代码是基于node 6.9.x JavaScript ES6语法实现。(关于如何在node使用ES6的语法,请参考我的前文:js笔记四:node 6.9.x for gulp完整配置过程)完成代码如下:xml_utils.jsCo...  阅读全文
posted @ 2017-02-20 14:31 冬瓜 阅读(1231) | 评论 (0)编辑 收藏

     摘要: 在node下,需要常常用目录的多级操作,所以用博客做一个记录  阅读全文
posted @ 2017-02-14 15:09 冬瓜 阅读(2515) | 评论 (0)编辑 收藏

     摘要: 这世界上已经有很多开发工具了。现在基于node.js上开发,对了了一下:visual studio 2015+ntvs ,webStorm,Atom,Sublime,editplus,notepad++和vscode,最终选择了vscode。
vs2015太大了,不是跨平台,ntvs这个插件对node.js和js支持还不够好。
webStorm也是一个非常不错的,相对vscode,还是有点大,重点它是收费的。  阅读全文
posted @ 2017-02-10 14:50 冬瓜 阅读(2612) | 评论 (0)编辑 收藏

仅列出标题
共17页: 1 2 3 4 5 6 7 8 9 Last