js之陣列,物件,類陣列物件

2022-04-22 09:23:46 字數 2149 閱讀 1313

許久不寫了,實在是不知道寫點什麼,正好最近有個同事問了個問題,關於陣列,物件和類陣列的,仔細說起來都是基礎,其實都沒什麼好講的,不過看到還是有很多朋友有些迷糊,這裡就簡單對於定義以及一下相同點,不同點簡單的說明一下!當然,這裡我們只討論資料結構的異同,並不討論他們之間所擁有的方法等不同!

陣列定義:簡而言之就是一組有序的資料集合,其索引為從0開始且自然增長的整數,其元素值可以是任何js資料!並且包含乙個名為length的屬性,該屬性表示陣列元素的個數!

看著上面的定義,我們很容易就能大概知道陣列是什麼樣的東西,下面我們來看個簡單的例子:

var array = [1,2,3];

console.log(array[0])//1

​console.log(array[1])//2

​console.log(array[2])//3

​console.log(array['length'])//3

從上面的例子我們可以看到,在宣告陣列時,我們只是顯式的宣告了陣列元素的值,並沒有顯式的給這些值定義索引和length屬性,但是在陣列定義好後我們發現就可以直接使用陣列的索引值來運算元組的元素了,從這不難看出,陣列元素的索引和length屬性是在陣列定義時根據陣列元素語言自動就幫你定義好了!而且很容易就能看出來,索引值是從0開始並且自然遞增的!

物件定義:js中物件型別為一組無序的由鍵->值組成的資料集合,其元素的鍵名和值都可以自定義!

我們來看乙個例子:

var object = 

console.log(object['a'])//1

console.log(object['b'])//2

console.log(object['length'])//undefined

從上面的例子簡單來看,物件自身所擁有的(不包括繼承來的)任何屬性都是有使用者自定義的!

陣列與物件:

從上面的定義和例子上來看,不知道大家有沒有發現,陣列和物件在某些地方或時候其實是很相像的!

我們先看看他們相同的部分,首先我們可以把陣列的索引值看成的元素的鍵名,元素看成是值,那麼陣列是不是也變成了鍵->值構成的了!

我們在來看看他們不一樣的地方,陣列的所以值始終的從0開始遞增的數字,物件的屬性值可以是任何自定義的字串,並且陣列包含乙個length屬性,而物件自身所擁有的(不包括繼承來的)任何屬性都是有使用者自定義的!也就是說我們,我們可以給顯式的給物件定義length屬性!

var arr = [1,2,3];

var obj = ;

console.log(arr[0], obj[0])//1, 1

console.log(arr['length'], obj['length'])//1, 1

通過對比,我們發現完全可以使用物件來模擬陣列,只要我們定義的物件的每個元素的鍵名都使用數字並且讓其保持遞增,且動態的定義乙個length屬性來表示元素個數,那麼從效果上來說,基本就個陣列相同了!這就是我們要說的:

類陣列物件:只包含使用從零開始,且自然遞增的整數做鍵名,並且定義了length表示元素個數的物件,我們就認為他是類陣列物件!

類陣列物件不僅是效果上跟陣列相似,並且在某些操作上也相同:

//定義陣列和類陣列物件

var arr = [1,2,3];

var obj = ;

//元素讀寫操作

console.log(arr[0], obj[0])//1, 1

console.log(arr['length'], obj['length'])//1, 1

arr[0] = 9;

obj[0] = 9;

//遍歷

for(var i = 0, len = arr.length; i < len; i++)

for(var i = 0, len = obj.length; i < len; i++)

我們看到,不僅在讀寫等操作上類陣列物件和陣列相似,並且在遍歷元素上都可以使用for迴圈進行遍歷!

通過上面我們對於定義的介紹,以及簡單的對比,我們不難看出,其實我們可以從資料結構上把js的陣列歸為物件,因為我們可以使用物件來模擬陣列,當然這裡僅僅說的是資料結構上,其實他們本身所繼承來的方法和一些屬性是不同的!在平常的理解中大家可以把陣列看成是特殊的物件,以方便理解! 

js之陣列,物件,類陣列物件

陣列定義 簡而言之就是一組有序的資料集合,其索引為從0開始且自然增長的整數,其元素值可以是任何js資料!並且包含乙個名為length的屬性,該屬性表示陣列元素的個數!看著上面的定義,我們很容易就能大概知道陣列是什麼樣的東西,下面我們來看個簡單的例子 vararray 1,2,3 console.lo...

js中 類陣列物件

類陣列物件首先是個物件,非null,非undefined,另外該物件長度 小於2 32 有限。可以對照 理解一下它的含義 假設obj是乙個類陣列物件 obj typeof obj object n非null,undefined,且是物件 isfinite obj.length 長度有限,且為非負值,...

JS 陣列 物件

一 基礎知識 參考部落格 js array陣列物件操作方法彙總 物件 具有屬性和方法,由k,v對組成 例如 var data 取物件的形式 1,data.username 2,data username username 已知 陣列 例如 var arr 1,2,3,4,5 字串 例如 var st...