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

來源:互聯網
上載者:User

標籤:javascript   數組操作   學習記錄   

今天碰到了一個問題: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的區別麼)


天之道,損有餘而補不足.....你想起了誰,大俠郭靖啊,只要有顆向上的心,總能看到太陽升起的那刻....



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.