摘要:幾乎所有的編程語言都有類似的數據結構。然而的數組卻略有不同。沒有定義中說的那樣的數據結構,作為替代。元素通過指定的分隔符進行分隔。返回該對象的源代碼。把數組轉換為本地數組,并返回結果。
寫在前面的話:
經常看到技術博客上寫的內容很詳細,對于一個問題,大家的博客內容似乎都是一樣的。不難發(fā)現(xiàn)這些技術博客已經成為各路教程的匯總地,而教程一般都是參考國外博客翻譯或者直接在經典的書籍上大片抄錄。我不推薦在segementfault或者其他博客上找教程學習編程,因為這樣得來的東西是碎片化的,往往也摻雜著作者個人對于程序的理解,很容易誤導人,所以學習最好的方法是自己買上一本圣經認真看透,再來博客論壇看看別人的學習心得,然后對比自己的理解,這樣收獲才會很大。所以今天關于這個javascript數組的總結認識,我寫的不是教程,而是根據經典書籍參考學習后得到的一些感悟。想要完整學習,請務必看下列參考書籍
數據結構與算法JavaScript描述 p13~p32
javascript高級程序設計(第三版) p84~p98
先來舉個數組栗子tracy=[{1:"pomelo"},"tracy","2"]; //數組可以保存任何類型的數組,如字符串,對象,數值都可以 typeof(tracy) //"object"數組是一個對象,對象是一個引用類型, Array.isArray(tracy); //”true“ ,這個是ECMAScript5定義的一個方法, tracy[0][1] //"pomelo",取出0號數組下屬性名為“1”的值。用 tracy[0].1// VM1687:2 Uncaught SyntaxError: Unexpected numbermessage: //因為對象屬性值只能是字符串類型,所以直接用”點表示法“會報錯,但是“[]表示法”可以 tracy=[{pomelo:"tracy"},"tracy","2"]; tracy[0].pomelo //"tracy"。把數組0的對象屬性名變成字符串就可以直接取值了 tracy.length//3 tracy[tracy.length]="imooc"; //"imooc", javascript中l(wèi)ength是可讀寫的,因為數組能夠實線末尾添加刪除操作 tracy//[Object, "tracy", "2", "imooc"] var tracyStr=tracy.toString(); //"undefined" toString()方法,將數組轉化為字符串 tracyStr //"[object Object],tracy,2,imooc" tracy.join(";"); //"[object Object];tracy;2;imooc" //join()方法只接受一個參數用于數組轉化為字符串后的分隔符。 //toString()方法只是默認用“,”逗號分割。
以上就是一個簡單的數組的栗子,我們可能在平時中也高頻使用。總結一下:
1.數組可以保存任何類型的數組,如字符串,對象,數值都可以
2.javascript中length是可讀寫的
3.JavaScript 對象中的屬性名必須是字符串。
數組是:一個存儲元素的線性集合(collection)---(一段線性分配的內存),元素可以通過索引來任意存取,索引通常是數字,用來計算元素之間存儲位置的偏移量。幾乎所有的編程語言都有類
似的數據結構。
然而JavaScript 的數組卻略有不同。
1.javascript沒有定義中說的那樣的數據結構,作為替代。javascript提供類數組對象(array-like),把下標變成字符串,用其作為屬性,所以這就是它慢的原因
2.JavaScript 中的數組是一種特殊的對象,用來表示偏移量的索引是該對象的屬性,索引可
能是整數。使用起來方便:屬性的檢索操作像操作對象屬性一樣
3.數組可以由 Array 對象的構造函數創(chuàng)建,也可以用內置的方法
對象的創(chuàng)建:
var pomelo={};//對象字面量表達法 或者 var pomelo=new Object();//Object構造函數的方法
數組的創(chuàng)建:
var pomelo=[];//數組字面量表達法 或者 var pomelo=new Array();//使用array構造函數的方法(可以省略new)
Q:那么數組字面量表達法創(chuàng)建與構造函數創(chuàng)建有什么不同呢?
A:大多數 JavaScript 專家推薦使用 []操作符,和使用 Array 的構造函數相比,這種方式被認為效率更高.
因為我們知道數組是一種對象,那么我們應該什么時候用數組?什么時候用對象呢?
其實有一個很簡單的規(guī)則就是:當屬性名是連續(xù)的整數時就使用數組,否則就使用對象.
concat() 連接兩個或更多的數組,并返回結果。
join() 把數組的所有元素放入一個字符串。元素通過指定的分隔符進行分隔。
pop() 刪除并返回數組的最后一個元素
push() 向數組的末尾添加一個或更多元素,并返回新的長度。
reverse() 顛倒數組中元素的順序。
shift() 刪除并返回數組的第一個元素
slice()從某個已有的數組返回選定的元素
sort() 對數組的元素進行排序
split() 方法用于把一個字符串分割成字符串數組。和join()方法相反
splice()刪除元素,并向數組添加新元素。
toSource() 返回該對象的源代碼。
toString() 把數組轉換為字符串,并返回結果。
toLocaleString() 把數組轉換為本地數組,并返回結果。
unshift() 向數組的開頭添加一個或更多元素,并返回新的長度。
valueOf() 返回數組對象的原始值
這些原生方法的使用我就不一一介紹了,大家自己去查API
javascript怎么去描述這些方法的數據結構和算法呢?1.為了方便鏈式調用,我們可以給Array原型添加自定義的方法來擴充數組功能
Function.prototype.method=function(name,func){ this.prototype[name]=func; return this; };
2.利用可讀寫的length可以完成數組添加,刪除操作
比如 push() 向數組的末尾添加元素 var poemlo=["1","2","3"]; pomelo.push("4");//["1","2","3","4"] // pomelo[pomelo.length]="4";//["1","2","3","4"] 比如 pop()函數 Array.method("pop_pomelo",function(){ return this.splice(this.length-1,1); }) pomelo.pop();// “4” //pomelo.pomelo_pop() //["4"]
3.利用for in 可以完成數組的循環(huán)遍歷的功能
//比如forEach()方法使得每個數組元素有乘方的效果 var pomelo=["1","2","3"]; function square(num){ console.log(num+": "+num*num); } pomelo.forEach(square); //可以添加數組功能square Array.method("square",function(){ for (var i=0;i4.普通的數組直接賦值是淺賦值,會改變原有的數組對象,我們可以自己寫一個copy數組函數
Array.method("copy_pomelo",function(){ var arr= []; for (var i=0;i
區(qū)分splice()和slice()函數,split()函數
slice() 從某個已有的數組返回選定的元素 slice(start,end) ===取出來的數組是slice[start]--slice[end] (但是不包含slice[end]) splice() 刪除元素,并向數組添加新元素。 splice(start,deletecount,item) ===數組從splice[start]開始,移除deletecount個元素,并用新的item數組元素代替 split()函數是把一個`字符串`分割成字符串`數組`。和join()方法恰好相反。 "2:3:4:5".split(":") //將返回["2", "3", "4", "5"]先寫到這兒.持續(xù)更新==.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85867.html
摘要:代碼實現(xiàn)六堆排序算法簡介堆排序是指利用堆這種數據結構所設計的一種排序算法。九計數排序算法簡介計數排序是一種穩(wěn)定的排序算法。計數排序不是比較排序,排序的速度快于任何比較排序算法。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 1、插入排序 1)算法簡介 插入排序(Insertion-Sort)的算法描述是一種簡單直觀的排序算法。它...
摘要:原文發(fā)布在數組應該是日常開發(fā)中最常見的數據結構了,雖然常見,但是卻不一定能優(yōu)雅地處理好,中數組的處理方法很多,各個方法的參數返回值是否修改原數組等也容易記混。 原文發(fā)布在:http://blog.xiaofeixu.cn/2017... 數組應該是日常開發(fā)中最常見的數據結構了,雖然常見,但是卻不一定能優(yōu)雅地處理好,JavaScript中數組的處理方法很多,各個方法的參數、返回值、是否修...
摘要:這些是中可用的最快屬性。通常來說我們將線性屬性存儲中存儲的屬性稱為。因此也支持所謂的屬性。整數索引屬性的處理和命名屬性的復雜性相同。 本文為譯文,原文地址:http://v8project.blogspot.com...,作者,@Camillo Bruni ,V8 JavaScript Engine Team Blog 在這篇博客中,我們想解釋 V8 如何在內部處理 JavaScrip...
摘要:此文章是我的原創(chuàng)文章,原文地址前篇整理了一些常用的遍歷操作方法,今天再整理一下對象中針對元素操作的方法。返回當前數組最后一個元素描述返回數組第一個元素,并從當前數組中刪除它。刪除的元素組成的數組 此文章是我的原創(chuàng)文章,原文地址:http://lpgray.me/article/49/ 前篇整理了一些Array常用的遍歷操作方法,今天再整理一下Array對象中針對元素操作的方法。 分別是...
摘要:數組的方法方法創(chuàng)建一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。可選,執(zhí)行函數時的值。刪除所有的鍵值對,沒有返回值。返回一個布爾值,表示某個鍵是否在當前對象之中。 說明 JavaScript數組去重這個問題,經常出現(xiàn)在面試題中,以前也寫過一篇數組去重的文章,(JavaScript 數組去重的多種方法原理詳解)但感覺代碼還是有點不夠簡單,今天和大家再說兩種方法,代碼...
閱讀 2574·2021-11-18 10:02
閱讀 1713·2021-09-30 10:00
閱讀 5310·2021-09-22 15:27
閱讀 1204·2019-08-30 15:54
閱讀 3671·2019-08-29 11:13
閱讀 2945·2019-08-29 11:05
閱讀 3319·2019-08-29 11:01
閱讀 569·2019-08-26 13:52