#
數組的解構與函數變參解構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標準后,也可以同樣提供一個強大的動態(tài)數組。但是js的數組,可以存放任何元素,這個是C++不能比的,雖然可以實現(xiàn),但是代價就有點大了。相對來說,現(xiàn)在版本的java和C#,則可以。因為java所有的都是Object… 閱讀全文
Array 類型恐怕是 ECMAScript 中最常用的類型了。而且,ECMAScript 中的數組與其他多數語<言中的數組有著相當大的區(qū)別。
雖然 ECMAScript 數組與其他語言中的數組都是數據的有序列表,但與其他語言不同的是,ECMAScript 數組的每一項可以保存
任何類型的數據。也就是說,可以用數組的第一個位置來保存字符串,用第二位置來保存數值,用第三個位置來保存對象,以此
類推。而且,ECMAScript 數組的大小是可以動態(tài)調整的,即可以隨著數據的添加自動增長以容納新增數據。算是萬能的容器.
JS中的數組還有很多功能,這篇先講講基礎
創(chuàng)建數組
用new方法
下面是一組用new Array創(chuàng)建數組,實際上,也可以不用new,直接使用Array也是一樣的
1: let a = new Array(); //這里創(chuàng)建了一個沒有元素的空數組 2: let a = new Array(10); //這里創(chuàng)建了元素個數為20的數組 3: let a = new Array(1,2,3,"aaaa"); //這里創(chuàng)建指定數組元素的數組 //等同于 1: let a = Array(); //這里創(chuàng)建了一個沒有元素的空數組 2: let a = Array(10); //這里創(chuàng)建了元素個數為20的數組 3: let a = Array(1,2,3,"aaaa"); //這里創(chuàng)建指定數組元素的數組
用[]
下面是一組用[]創(chuàng)建數組的辦法,多數用這種方法比較簡潔
4:let a = []; //創(chuàng)建一個空數組 5:let a=[1,2,3,"aaa"];//指定元素列表的創(chuàng)建數組 6:let a = [1,,2];//指定元素列表,但是會跳過若干元素創(chuàng)建數組 //跳過的部分為#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
四個執(zhí)行結果是一樣的.
判斷是否為數組
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郵件。告訴我現(xiàn)在是10.1.2版本了
以前還申請過免費的序列號,但是就一直沒有用過。Delphi/C++Builder太大了,幾十個G,看到我弱小的C盤,
只好放棄了,以前還會安裝2010版本的,有空拿來做一下工具,現(xiàn)在都好久沒有安裝了。
好懷念當年的Turbo C! 閱讀全文
摘要: cppblog人氣真不行了,目前只有我和eryar兩個人在發(fā)博!!!雖然暫時沒有搞C++了,但是其他人呢?各位來點人氣 閱讀全文
摘要: 注:關于node-heapdump請看 使用node heapdump
基于appium源碼 1.6.3 運行,發(fā)現(xiàn)運行一段時間后,會出現(xiàn)內存溢出.
用node-heapdump生成heap快照 發(fā)現(xiàn)多了很多字符串對象:內容如下 閱讀全文
摘要: 在使用appium的過程中,發(fā)現(xiàn)有內存泄露,最后就process out of memory了,就掛了
網上用使用增加運行內存的方式(還是抗不住),沒辦法,就只好找出內存泄露的地方了
對node.js很多文章,都是說用memwatch,結果發(fā)現(xiàn),這個是一個死項目,有四年沒有更新過了,在現(xiàn)有的環(huán)境下,是沒有辦法編譯的。
然后又有一個memwatch-next,顧名思義,就是memwatch的下一個版本,結果是果然也可以編譯,一些事件也支持,但是要headdump后要end后,就掛了。
國內,用百度,你一萬年都別想解決問題,估計找成人不宜的東西,百度世界第一名,google也不比過百度。 閱讀全文
摘要: 這里是基于node的xmldom上擴展的工具,在使用appium的時候,常常需要用source功能來分析當前上下文,所以擴展了若干函數,用于分析。這些代碼是基于node 6.9.x JavaScript ES6語法實現(xiàn)。(關于如何在node使用ES6的語法,請參考我的前文:js筆記四:node 6.9.x for gulp完整配置過程)完成代碼如下:xml_utils.jsCo... 閱讀全文
摘要: 在node下,需要常常用目錄的多級操作,所以用博客做一個記錄 閱讀全文
摘要: 這世界上已經有很多開發(fā)工具了。現(xiàn)在基于node.js上開發(fā),對了了一下:visual studio 2015+ntvs ,webStorm,Atom,Sublime,editplus,notepad++和vscode,最終選擇了vscode。
vs2015太大了,不是跨平臺,ntvs這個插件對node.js和js支持還不夠好。
webStorm也是一個非常不錯的,相對vscode,還是有點大,重點它是收費的。 閱讀全文
|