#
数组的解构与函数变参解构es6新增了一个解构功能,如下所示 let [aa,bb,cc]= [1,2,3]; console.log(aa,bb,cc); //显示为1 2 3
也就是将右边数组的元素依次赋值给左边数组列表中变量 . let aa,bb,cc; [aa,bb,cc] = [1,2,3];
let [aa,,cc] = [1,2,3];
let [aa,bb,cc] = [1,2]; //cc===undefined; //或let [aa,bb,cc] = [1,,3]; //bb===undefined;
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); }
这个和lua的多值返回一样的效果.可以简化一些函数返回处理 变量 操作符…对于函数变量,es2015增加了操作符…,实际上也是数组,大大简化了变参的操作. 对于参数名称,建议使用默认的args - 常见使用 function sum(…args) { let r = 0; for(let i = 0; i < args.length; i++) { r += args[i]; } return r; }
function printLog(…args) { console.log(…args); //这一步大大简化了,如果是ES5那就头痛了.要用arguments, }
function printLog(…args) { console.log("专有前缀",…args,"专有后缀"); }
- 因为…args是一个数组,也就是它可以用数组的方法操作.
function printLog(...args) { for(let i = 0; i < args.length; i++) { console.log(args[i]); } args.push("end"); console.log(...args); }
let u = [1,2,3]; let u1 = […u,4,5]; console.log(u1); //显示为[1,2,3,4,5];
后记到此,所有数组和相关笔记就没有了,期待Node.js能完整支持es6,省得用babel再编译了.再复杂的东西,都是由最简单的元素组成.如果忽视最简单的元素,就像JavaScript中的let,const,for,数组等,如果不能充分的理解和使用,你所的”高深代码”能好到哪里去呢?
摘要: 前面一篇,我们写了数组的基础,在这里则会把主要的方法和应用列出来.
对于迭代方法和归并方法只是一个简化代码的作用,可能这些方法功能非常见,所以干脆默认提从了这两组方法。对于js的数组,使用起来非常方法,相比c/c++真是无与伦比…。在C++11标准后,也可以同样提供一个强大的动态数组。但是js的数组,可以存放任何元素,这个是C++不能比的,虽然可以实现,但是代价就有点大了。相对来说,现在版本的java和C#,则可以。因为java所有的都是Object… 阅读全文
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"); //这里创建指定数组元素的数组
用[]
下面是一组用[]创建数组的办法,多数用这种方法比较简洁
4:let a = []; //创建一个空数组 5:let a=[1,2,3,"aaa"];//指定元素列表的创建数组 6:let a = [1,,2];//指定元素列表,但是会跳过若干元素创建数组 //跳过的部分为#ff0000
length属性
对于数组的长度,用属性length可以获得
可以通过设置该值,来改变数组的大小
也可以能过下标设置,如
let a = [1,2,3]; a[10]=99; console.log(a); //结果为[ 1, 2, 3, , , , , , , , 99 ],也就是在没有的位置插入了undefined
[下标]访问
用[下标]的方式,可以访问数组的元素
例:
let a=[3,2,1]; for(let i = 0; i < a.length; i++){ console.log(a[i]); }
如果对数组越办访问,得到的将是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
将数组变成字符串
数组的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'
基础篇先到这里
摘要: 因为有注册到Embarcadero,所以还能常常收到Embarcadero邮件。告诉我现在是10.1.2版本了
以前还申请过免费的序列号,但是就一直没有用过。Delphi/C++Builder太大了,几十个G,看到我弱小的C盘,
只好放弃了,以前还会安装2010版本的,有空拿来做一下工具,现在都好久没有安装了。
好怀念当年的Turbo C! 阅读全文
摘要: cppblog人气真不行了,目前只有我和eryar两个人在发博!!!虽然暂时没有搞C++了,但是其他人呢?各位来点人气 阅读全文
摘要: 注:关于node-heapdump请看 使用node heapdump
基于appium源码 1.6.3 运行,发现运行一段时间后,会出现内存溢出.
用node-heapdump生成heap快照 发现多了很多字符串对象:内容如下 阅读全文
摘要: 在使用appium的过程中,发现有内存泄露,最后就process out of memory了,就挂了
网上用使用增加运行内存的方式(还是抗不住),没办法,就只好找出内存泄露的地方了
对node.js很多文章,都是说用memwatch,结果发现,这个是一个死项目,有四年没有更新过了,在现有的环境下,是没有办法编译的。
然后又有一个memwatch-next,顾名思义,就是memwatch的下一个版本,结果是果然也可以编译,一些事件也支持,但是要headdump后要end后,就挂了。
国内,用百度,你一万年都别想解决问题,估计找成人不宜的东西,百度世界第一名,google也不比过百度。 阅读全文
摘要: 这里是基于node的xmldom上扩展的工具,在使用appium的时候,常常需要用source功能来分析当前上下文,所以扩展了若干函数,用于分析。这些代码是基于node 6.9.x JavaScript ES6语法实现。(关于如何在node使用ES6的语法,请参考我的前文:js笔记四:node 6.9.x for gulp完整配置过程)完成代码如下:xml_utils.jsCo... 阅读全文
摘要: 在node下,需要常常用目录的多级操作,所以用博客做一个记录 阅读全文
摘要: 这世界上已经有很多开发工具了。现在基于node.js上开发,对了了一下:visual studio 2015+ntvs ,webStorm,Atom,Sublime,editplus,notepad++和vscode,最终选择了vscode。
vs2015太大了,不是跨平台,ntvs这个插件对node.js和js支持还不够好。
webStorm也是一个非常不错的,相对vscode,还是有点大,重点它是收费的。 阅读全文
|