2015-11-04 69 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 
相关问题