DIV CSS 佈局教程網
設為首頁
加入收藏
首頁
HTML基礎知識
CSS入門知識
JavaScript入門知識
DIV+CSS佈局
WEB網站前端
網頁腳本
網頁SEO優化
網頁制作工具
DIV+CSS佈局教程網
>>
網頁腳本
>>
JavaScript入門知識
>>
JavaScript基礎知識
>> JavaScript數組的快速克隆(slice()函數)和數組的排序、亂序和搜索(sort()函數)
JavaScript數組的快速克隆(slice()函數)和數組的排序、亂序和搜索(sort()函數)
編輯:JavaScript基礎知識  
JavaScript中對變量的操作都是通過引用方式,而對數組也一樣。
前兩天想要對一個數組進行復制,一直苦於找不到辦法(遍歷的方法俺是絕對不采用的)
無意中拿起《JavaScript權威指南》翻了翻數組的操作函數,發現了slice()函數。
slice()原來是用來截取數組中的一部分,這裡我用它來復制數組,它的格式如下:
array.slice(start, end)
如果省略了end參數,則切分的數組包含從start開始到數組結束的所有元素。
現在要用它來復制數組,就一行,呵呵:
var newArray=oldArray.slice(0);
所有這些功能,用一個sort()就可以完成了。
1. 排序:
默認的sort()按字符編碼排序的:
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
現在要讓它按照數值大小排序:
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
只要傳遞一個比較函數給sort就可以了,如果比較函數的值小於0,則表示a必須出現在b前面,否則在b後面。
2. 亂序:
讓比較函數隨機傳回-1或1就可以了:
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
3. 搜索:
用sort()來玩搜索還蠻新鮮的,呵呵,看看是怎麼玩的吧。
我現在要把數組裡含有字母'a'的元素全部找出來,如果沒有sort(),似乎只能用遍歷了,遍歷的效率…那個叫恐怖啊!!具體做法如下:
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
這樣就把數組中含有字母'a'的元素全部放到數組前面啦,再經過一些簡單的處理,就可以輸出搜索結果了。
用slice來拷貝數組的確是一個很好的方法,而且實際上用得也會比較多,不過效率和遍歷相比很難說優劣,因為我們誰也不知道js的slice是怎麼實現的,不過推測起來應該要高效一些,更重要的是寫起來簡單多了。
第二個排序的方法確實很巧妙,這樣就不用自己寫洗牌算法了 ^^
至於第三個嘛...如果不用正則,一定要用Sort的話,一樣是寫起來簡單很多,不過效率可能不見得比遍歷高,要知道遍歷並不意味著效率低,線性表單向搜索的遍歷算法是O(N)復雜度的,Js的sort我猜用得是q-sort算法(如果用冒泡的話那就太寒酸了吧^^),所以起碼是O(N*LogN)復雜度的(排序比搜索復雜也很容易理解),也就是說執行效率上用Sort匹配基本上肯定是要不如用直接的遍歷來得快的。
數組拷貝我習慣用concat。如: newArr = oldArr.concat(),效率和slice(0)一樣。
我測試過,slice或concat拷貝數組要比遍歷快得多。
測試過程中我還發現另外一個特點,一個數組通過下標取值時,似乎也是通過類似遍歷的的方法取值的。比方說數組arr有100萬個數組元素,那麼這兩個表達式:i = arr[0] 和 i = arr[999999] 相比,前者會更快的取到值!(如果不信可以自己去編個相關例子試試看)。也就是說當遍歷數組時,每次取值的所需時間會隨著下標值的增加而增大。
上一頁:
slice函數的用法 之不錯的應用
下一頁:
JavaScript方法和技巧大全
JavaScript基礎知識
javascript基礎知識分享之類與函數化
1.對象適合於收集和管理數據,容易形成樹型結構。Javascript包括一個原型鏈特性,允許對象繼承
12種不宜使用的Javascript語法整理
1.== Javascript有兩組相等運算符,一組是==和!=,另一組是===和!==。前者只比較
JavaScript學習筆記整理_關於表達式和語句
表達式和語句eval( ) 只有一個參數參數非字符串時,直接返回這個參數;參數為字符串時,它把字符串
相關文章
使用canvas繪制圓形和貝塞爾曲線
Javascript模擬拆紅包效果
JavaScript函數之美
JavaScript葵花寶典之閉包
原生Javascript插件開發實踐
理解JavaScript執行環境與作用域
JavaScript input框輸入實時校驗
原生javascript實現圖片放大鏡效果
javascript 隨機字符串
使用javascript生成的植物顯示過程特效
JavaScript基礎知識
JSON基礎
正則表達式
關於JavaScript
JavaScript技巧
jQuery入門知識
AJAX入門
JavaScript綜合知識
小編推薦
JavaScript中的勻速運動和變速(緩沖)運動詳細介紹
js實現日歷可獲得指定日期周數及星期幾示例分享(js獲取星期幾)
JavaScript charCodeAt方法入門實例(用於取得指定位置字符的Unicode編碼)
js對象關系圖 方便dom操作
訓練題(1)計算100以內所有奇數的和
Javascript中arguments對象詳解
中文字符匹配js正則表達式
Javascript入門學習第七篇 js dom實例操作第1/2頁
Javascript中自動切換焦點實現代碼
javascript冒泡排序小結
熱門推薦
淺析四種常見的Javascript聲明循環變量的書寫方式
JavaScript中使用指數方法Math.exp()的簡介
Javascript WebSocket使用實例介紹(簡明入門教程)
Javascript觀察者模式
JS保留四捨五入兩位小數函數
JavaScript中Cookies的相關使用教程
javascript工廠方式定義對象
json的使用小結
JavaScript中Math對象使用說明
大家都在看
第一章 CSS的基本認識
修改IE浏覽器滾動條樣式的一個實例
jQuery對象與DOM對象之間的相互轉換
認識Opera浏覽器和IE浏覽器
js動態修改表格行colspan列跨度的方法教程
用戶登錄驗證Ajax實例詳解
設計理論:顧客為什麼放棄購物車?
JavaScript如何獲取數組最大值和最小值
XML學習教程
|
jQuery入門知識
|
AJAX入門
|
Dreamweaver教程
|
Fireworks入門知識
|
SEO技巧
|
SEO優化集錦
|
Copyright ©
DIV+CSS佈局教程網
All Rights Reserved