2015-11-04 70 views
14

聲明JavaScript數組時,「{}」和「[]」有什麼區別? 通常我喜歡聲明聲明JavaScript數組時,「{}」和「[]」有什麼區別?

var a=[]; 

什麼是聲明數組作爲var a={}

+5

'VAR一個= {};'是一個對象_key-VALUE_對。 'var a = [];'是存儲在順序索引中的數組值。 – Tushar

+3

當你使用'{}'時,你並沒有創建數組,你正在創建'object' – Rayon

+0

確切的問題是什麼? _object_和_array_之間的區別?你想做什麼?添加一些代碼 – Tushar

回答

24

似乎沒有人能夠解釋數組和對象之間的區別。

[]正在聲明一個數組。

{}正在宣告一個對象。

一個數組具有一個對象的所有功能,它具有附加功能(您可以將數組看作對象的子類),其中在子類中添加了其他方法和功能。實際上,typeof [] === "object"爲了進一步向你展示一個數組是一個對象。

的附加功能包括一個神奇的.length屬性,跟蹤數組中的項目數和方法陣列上運行的整體轉換的,如.push().pop().slice().splice(),等等......你可以看到數組方法here的列表。

一個目的爲您提供了一個屬性名稱與值作爲相關聯的能力:

var x = {}; 
x.foo = 3; 
x["whatever"] = 10; 
console.log(x.foo);  // shows 3 
console.log(x.whatever); // shows 10 

對象屬性可以經由x.foo語法或通過陣列狀語法x["foo"]進行訪問。後一種語法的優點是可以使用變量作爲屬性名稱,如x[myvar],並使用後一種語法,可以使用包含字符的屬性名稱,該字符在x.foo語法中不允許使用Javascript。

屬性名稱可以是任何字符串值。


數組是一個對象,因此它有一個對象的所有相同的功能,加上用於管理有序連續0開始,往上走一些編號的索引列表一堆附加功能長度。數組通常用於數字索引訪問的項目的有序列表。而且,由於陣列是有序的,因此有很多有用的功能來管理列表.sort()的順序或添加或刪除列表中的內容。

5

的meanning當你聲明

var a=[]; 

你聲明一個空數組。

但是當你宣佈

var a={}; 

你聲明的對象。

儘管Array也是Javascript中的對象,但它是數字鍵配對值。 它具有對象的所有功能,但添加了一些像Push,Splice,Length等數組的方法。

所以,如果你想要一些值,你需要使用數字鍵使用數組。 其他使用對象。 你可以創建這樣的對象:

var a={name:"abc",age:"14"}; 

,並且可以訪問像

console.log(a.name); 
+0

感謝您的回答@Mytri – Venkat

+0

如何創建實例並訪問鍵值對 – Venkat

+0

小示例代碼對我非常有用@Tushar – Venkat

2

值,可以理解是這樣的:

var a= []; //creates a new empty array 
var a= {}; //creates a new empty object 

你也可以理解

var a = {};相當於var a= new Object();

注:

您可以使用數組時,你是不屑關於元素的您的收藏順序(同一類型的),否則你可以使用對象。在對象中,訂單不能保證。

+2

那麼數組和對象之間有什麼區別? – nnnnnn

+1

@nnnnnn: - 這可以被引用:[數組和對象之間的區別是什麼?](http://stackoverflow.com/questions/874205/what-is-the-difference-between-an-array- and'-an-object) –

+0

@RahulTripathi nnnnnn表示你還應該解釋它們之間的差異,以及何時應該使用數組vs vs對象 – Tushar

1

它們是兩個不同的東西..

[]的聲明數組:
給出的數字索引保存元素的列表。

{}被聲明一個新的對象:
給出,與名稱和類型+值字段,
有的喜歡把它看作「關聯數組」的對象。 但它們的表示中不是數組。

你可以閱讀更多@This Article

1

語法JSON的

對象= {} | {會員}

  • members = pair |對,成員
  • 對=字符串:值

陣列= [] | [elements]

  • elements = value |值元素

值= 串|數|對象|陣列|真|假|空

3
var a = []; 

它是使用於括號內爲簡單值的陣列。 例如。

var name=["a","b","c"] 

var a={} 

也用於值數組和對象/屬性。 例如。

var programmer = { 'name':'special', 'url':'www.google.com'} 
1

在JavaScript中,數組和對象實際上非常相似,儘管在外部它們看起來有點不同。

對於數組:

var array = []; 
array[0] = "hello"; 
array[1] = 5498; 
array[536] = new Date(); 

正如你可以看到在JavaScript中數組可以是稀疏的(有效索引不必是連續的),他們可以包含任何類型的變量!這很方便。

但大家都知道JavaScript是奇怪的,所以這裏有一些奇怪的位:

array["0"] === "hello"; // This is true 
array["hi"]; // undefined 
array["hi"] = "weird"; // works but does not save any data to array 
array["hi"]; // still undefined! 

這是因爲一切都在JavaScript是一種對象(這就是爲什麼你還可以創建使用new Array()數組)。因此,數組中的每個索引都被轉換爲一個字符串,然後存儲在一個對象中,所以數組只是一個對象,不允許任何人使用非正整數的鍵存儲任何內容。

那麼什麼是對象?

JavaScript中的對象與數組類似,但「索引」可以是任何字符串。

var object = {}; 
object[0] = "hello"; // OK 
object["hi"] = "not weird"; // OK 

您甚至可以選擇在使用對象時不使用方括號!

console.log(object.hi); // Prints 'not weird' 
object.hi = "overwriting 'not weird'"; 

可以更進一步和定義對象像這樣:

var newObject = { 
    a: 2, 
}; 
newObject.a === 2; // true 
相關問題