1. 程式人生 > >js中對數組的操作-------Day49

js中對數組的操作-------Day49

substr 沒有 技術分享 表示 實用 麻煩 向上 新的 既然

今天碰到了一個問題: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