標籤:javascript數組強大splice方法
Javascript中總有一些所謂的細節知識會讓你目瞪口呆。
前段時間,項目組新增一個需要,要求系統中所有顯示時間的地方支援日期格式可定製
什麼事日期格式可定製呢,在平常呢,我們看到的時間格式一般是“yyyy-MM-dd”形式的,現在要支援如下六種:
yyyy-MM-dd hh:mm:ss
MM-dd-yyyy hh:mm:ss
dd-MM-yyyy hh:mm:ss
yyyy/MM/dd hh:mm:ss
MM/dd/yyyy hh:mm:ss
dd/MM/yyyy hh:mm:ss
系統還特意有一個頁面來定製系統的格式;一旦設定之後重新整理頁面系統多有模組設計時間格式的展示,全部變成最新設定的格式了。
簡單支援這些還算簡單;還有一種比較坑爹的是多頁簽操作;一個頁簽改了格式;另一個頁面不重新整理還得保持當前頁面的格式(SE定的規格)。
現在的方案是:前台向後台發請求之前轉一次成yyyy-MM-dd,然後背景邏輯不用改變;後台返回資料時,再轉成當前頁面的格式。
現在呢,有個頁面要傳一個時間段字串到後台查詢,比如:
04/16/2015 19 :57:10~ 04/16/2015 21:57:10
這裡就需要處理一下了。
var Eventtime ="04/16/2015 19 :57:10~ 04/16/2015 21:57:10";Eventtime.split("~");//["04/16/201519 :57:10", "04/16/2015 21:57:10"]
然後遍曆這個數組,每個元素再拆分為[“04/16/2015”,“ 19 :57:10”];然後將前半部分轉換成最新格式yyyy-MM-dd,在替換第一個位子的值;之後再拼接成合法格式的eventTime傳到後台;偶然間使用到了數組的splice()方法;忽然發現了,其強大的功能;分享給大家。
現在,就講講最強大的splice()函數了,它接受三個參數,可實現添加、刪除、修改等不同的功能。看下w3school上它的文法,如下:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6B/8A/wKiom1Uvy5vzjCrDAAIwpTWDU7c577.jpg" title="splice.jpg" alt="wKiom1Uvy5vzjCrDAAIwpTWDU7c577.jpg" /> 下面舉幾個簡單的例子實現,增刪改的效果。
添加元素
var arrJxj = [1,2,3,4,5,6];undefinedarrJxj.splice(3,0,12,13,14);[]arrJxj[1, 2, 3, 12, 13, 14, 4, 5, 6]arrJxj.splice(3,1,15,16,17);[12]arrJxj[1, 2, 3, 15, 16, 17, 13, 14, 4, 5, 6]
可以看到如果想添加元素的效果,第一個參數是想替換的位子,第二個參數為0;第三個參數就把該位置元素替換掉了;
刪除元素
arrJxj.splice(3,3);[15, 16, 17]arrJxj[1, 2, 3, 13, 14, 4, 5, 6]arrJxj.splice(3,2);[13, 14]arrJxj[1, 2, 3, 4, 5, 6]
可以看到,如果不指定第三個參數,就可以實現刪除特定位置的元素;
修改元素
arrJxj[1, 2, 3, 12, 13, 14]arrJxj.splice(3,2,20,21);[12, 13]arrJxj[1, 2, 3, 20, 21, 14]
第二個參數的數字,與第三個參數位元一樣,就可以起到替換的效果。
當然,上面的例子其實改變了,數組本身;屬於深拷貝,所以需要大家注意一下。
本文出自 “shuizhongyue” 部落格,請務必保留此出處http://shuizhongyue.blog.51cto.com/7439523/1633661
javascript數組強大splice方法