首先感謝Dash 我不再用處處亂找文檔了javascript
再次感謝日食記 讓個人看到了世界的美好java
好的 咱們進入正題chrome
註解 我全部的學習心得都創建在ECMAscript5以後數組
IE9以前的瀏覽器概不負責瀏覽器
javascript Array是一個好玩的對象app
如何檢測她呢 首先instanceof是個不錯的方法函數
if (value instanceof Array) { }
不過根據javascript高級程序設計說 這樣作 若是一我的從新構造了Array函數 你完了學習
so 這樣ui
if(Arrays.isArray(value)) { }
如今咱們要構造了
this
不過搞那些有啥意思呢
其實我關心這些構造方式時候產生的類型是否同樣
var arr1 = []; var arr2 = new Array(); var arr3 = Array(); alert(typeof arr1); alert(typeof arr2); alert(typeof arr3);
好吧 都是object類型
你們都知道數組裏有個length屬性 那麼她靠譜嗎
var fruits = []; fruits.push('banana', 'apple', 'peach'); console.log(fruits.length); // 3 fruits[5] = 'mango'; console.log(fruits[5]); // 'mango' console.log(Object.keys(fruits)); // ['0', '1', '2', '5'] console.log(fruits.length); // 6
臥槽 明明只有4個元素 返回的是6
不過通過個人實驗 在現代瀏覽器(ie9之後版本 chrome firefox safair)上
for (var i = 0; i < fruits.length; i++) { console.log(fruits[i]); };
是會填充undefined的
如今我嘗試着修改length屬性
fruits.length = 2; console.log(Object.keys(fruits)); // ['0', '1'] console.log(fruits.length); // 2
臥槽 我以前的數據呢
查看一下Array.length 竟然是可寫的
兩個做用
循環數組 相似於foreach
消除不須要的數組 。。。
Array 實現棧 隊列
棧 只有一個出入口 先進後出
so 咱們假設如今有一個空數組
var stack = [];
我想要放入 一些元素
var totalnum = stack.push('angel', 'clown', 'mandarin', 'sturgeon'); console.log(stack); // ['angel', 'clown', 'mandarin', 'sturgeon'] console.log(totalnum); // 4
拿出一個元素
var poped = stack.pop(); console.log(poped); // sturgeon
實現一個 隊列
隊列 先出先進 進出分開
後面進 前面出
var queue = ['angel']; arr.push('clown', 'mandarin', 'surgeon'); // = 4 console.log('queue before: ' + queue); var shifted = queue.shift(); console.log('queue after: ' + queue); console.log('Removed this element: ' + shifted);
前面進 後面出
一樣 只是進使用 unshift 出使用pop