js中對數組的操作-------Day49
今天碰到了一個問題:easyui的使用中,datagrid表格的高度怎樣改變(設定成一個固定的高度),看了半天文檔,也從網上查了些。還楞是沒弄出來,有點小郁悶。這easyui在某些情況情況下確實好用了,可要任意調整實在是有些麻煩啊。
做不出就先放放,回家了就換個心情。
昨天在回放拖拽軌跡的實現中。對數組的應用成了關鍵的一步,於是特意查看了一些javascript對數組的操作。這裏來記錄下:
“增刪改查”這四個字相信都不陌生。我們絕大多數的工作都是在進行這些操作,而這些操作卻有一個大前提:存在。存在一個讓你增刪改查的對象,假設不存在,那我們就先來創建一個:
1、創建
var a=new Array(); var b=new Array(3); var c=new Array([‘qwe‘,"12313",123]); var d=["asd","qwe","zxc"];
通常我們創建一個數組的方式為上面四種。然後
*alert(a+"----------"+b+"---"+c+"--------"+d);
這樣我們能夠清晰的看到。第一個是空的。而第二個有兩個逗號“,”則說明有3個空,後面的則是正常輸出,可是
*alert(typeof(a)+"----------"+typeof(b)+"---"+typeof(c)+"--------"+typeof(d))來看,我們都成功的創建了一個對象。
創建過程中我們存在四種方法。到底哪一種更好呢。我們沒法評判,不同情況下各有千秋吧。但有一種情況我們須要特別註意
var test01=new Array(3); var test02=new Array([3]);
事實上這頗有些迷惑性。只是一個中括號,意義卻不同樣。
前一個為創建一個length長度為3的數組,後一個則為創建一個長度為1,且第一個值為3的數組,這樣放在一起的話可能我們都明確。但是就給你不論什麽當中一個,假設不細致。極有可能出錯呢。
而還有一方面new Array([5,2])和[5,2]這兩個數組同樣麽,且在查看中解答。
2、查看
既然創建成功了,我們就能夠查看這個對象的屬性或者值。或者其他。
首先我們知道查看一個數組最好的方式是將它遍歷出來,通常的寫法應該為:
for(var i=0;i<d.length,i++){ alert(d[i]); }這裏就不一一展示了,僅僅記錄幾個頗為迷惑的地方:
*alert(a[0]+"-----"+b[0]+"---"+c[0]+"-----"+d[0]+a[2]+"-----"+b[2]+"---"+c[2]+"-----"+d[2]);這樣我們來看輸出結果
這裏我們就攻克了上面創建中的問題,new Array(【5,2】)和【5。2】還是不一樣,前者表示說創建了一個數組,數組含有一個元素,而後者則說明創建了兩個元素,分別為“5”和“2”。其有用前面的來表示後面的話,應該寫為:var e=new Array([‘5‘],[2],);
於是我寫下了這樣一個輸出
var e=new Array([‘qwe‘],["12312"],[123]); var f=[["1","2"],["2","3"]]*alert(a[0]+"-----"+b[0]+"---"+c[0]+"-----"+d[0]+a[2]+"-----"+b[2]+"---"+c[2]+"-----"+d[2]+"---"+e[0]+"--"+f[0]);結合上面的來看的話,你猜結果會是什麽?
這樣原理就更清楚了吧。但是有一點我卻還是有些疑惑:
var d=["asd","qwe",123]; var e=new Array(‘qwe‘,"12312",123);***假設我們輸出alert(e[2]+"---"+typeof[e[2]]+“--”+d[2]+"---"+typeof(d[2]));結果為什麽都是123,卻一個是object。一個是number呢?還是有些小疑惑
而假設var t=e【2】,再輸出typeof(t)。也是number了就,這是為什麽呢?
3、刪除
假設上面原理上多點。那麽這裏就多記些方法吧
.pop()這個昨天就應用了,刪除數組的最後一個元素值。並返回該元素值。public object pop(){這裏是刪除最後一個的實現;return object}
shift()有了刪除最後一個,就比較關註第一個。有頭有尾嘛,這種方法就是用來刪除第一個元素,並返回第該元素值的操作;
.splice(here,num,newItem,newItem2,...)這種方法存在參數。整體的意義是刪除第幾位到第幾位被。並以以數組形式將刪除的值返回,而參數第一位是在數組的第幾位開始數,開始刪除,這裏是從0開始數的,第二個參數則是數幾位,假設為0,則不進行刪除。假設為1。則從開始數的那位開始僅僅查1個數值,依次論推,而假設後面再跟參數的話,那就應該到了加入的範疇裏了,這裏先一並解釋下。就是進行完之前的操作之後。再在剛才的操作位插入後面的參數,即新的數值。
4、添加
前面居然介紹到了splice,這裏就該說添加了,splice在一定程度上就是添加,假設第2個參數為0。同一時候還存在第3個或者很多其它的參數時,它就是添加,另外假設第2個參數不為0,同一時候還有很多其它參數的話,那就是改動了,所以改動就不再單獨說了。
而之前用過的.push()則是在數組末尾加入
相對的.unshift()則是在數組的最前端進行加入。跟刪除也就相應起來了吧
5、排序
不得不說,這曾是個慘痛的教訓。在那個冒泡排序還不熟悉的時候。以前用過這種方法進行過排序,可是面試的時候,楞是兩個一個都沒有想起來,反序啊還是自己你憋了半天寫的醜陋不堪的。多麽痛的領悟啊當時是
.sort()多麽痛的領悟啊
.reverse()反序,最前面的放最後面了,最後面的到最前面了。多麽痛的領悟啊
6、數組的截取、合並和拷貝
.slice(start,[end]),這個的應用讓我想起了subString(start,[end]),這裏是生成的一個新的,一個新的,是new了一個哦
.concat()拼接,都是返回的新的哦。拼接之後的,new個的新的哦。新的哦
這裏臨時還記錄這麽多吧。也沒查到太多實用的操作。這裏附上個小知識:
typeof()的返回值有六個:number /string /boolean /object /function /undefined(還記得它和null的差別麽)
天之道。損有余而補不足.....你想起了誰,大俠郭靖啊。僅僅要有顆向上的心,總能看到太陽升起的那刻....
js中對數組的操作-------Day49