js中数组与对象的区别

JavaScript09

js中数组与对象的区别,第1张

数组:以  ' [ '  开始 以  ' ] '  结束 , 用  ' , '  隔开  ,不承认键值对格式的数据, 默认排序

数组中的数据可以为对象

用  .length 可以得到数组长度, 用  [index] 取值

例如: var a=[0,1,3,4]

                console.log(a.length)

                //4

                 console.log(a[2])

                //1

对象: 以 '{' 开始  以 '}'结束 用 ' , ' 隔开  对象中的元素 以 key:value 形式呈现  如果value不加 ' ' 则为变量(可被赋值)  加了 ' ' 为字符串  , value 可以为数组 数组中也可包含对象, 对象的长度不可以通过 .length 来获取  对象的属性也不能通过index来获取

j s获取对象长度和名称

1.对象的长度不能用.length获取,用js原生的Object.keys可以获取到

var obj = {'name' : 'Tom' , 'sex' : 'male' , 'age' : '14'} 

var arr = Object.keys(obj) 

console.log(arr)  // ['name','sex','age'] 

console.log(arr.length)  //3

2. javascript获取json对象的key名称的两种方法

第一种方法

jsonObj = { Name: ‘richard‘, Value: ‘8‘ }

for (key in jsonObj){

    console.log(key)

    //add your statement to get key value

}

结果

Name

Value

第二种方法

javascript中,Object具有一个key属性,可以返回json对象的key的数组

(Object has a property keys, returns an Array of keys from that Object)

用法:

Object.keys(jsonObj)

jsonObj = { Name: ‘richard‘, Value: ‘8‘ }

console.log(Object.keys(jsonObj))

结果

[ ‘Name‘, ‘Value‘ ]

var LangShen = { "Name":"Langshen",

"MyWife":[ "LuLu","26" ],

"MySon":[{"Name":"Son1"},{"Name":"Son2"},{"Name":"Son3"}]

}

从上面的结构来看,是一个对象里面的第一项是个属性,第二项是一个数组,第三个是包含有多个对象的数组。调用起来,也是一层一层访问,对象的属性用.(点)叠加,数组用 [下标] 来访问。

var

a

=

[]

var

a

=

{}

这两种不能算真正的数组和对象,只是和数组和对象类型,其实这两种是json格式的

var

a

=

new

Array

()

var

a

=

new

Object()

这两种是真正的js的对象和数组

之所以前他们使用方法类似,是因为json和js中对象数组的使用方法类似,[]和数组都是根据索引调用的,{}和js的对象都是根据key值调用的,所以可以通用

这个就类似于你用getElementsByTagName("div")获取元素一样,它可以通过下表得到元素,但他其实也不是数组,是一个可以通过使用下表获取的集合

一直以来穿梭于前端后端之间,突然间发现自己对JS的数组和对象操作有些混淆了,因为他们的操作方式太像了。例如数组 var arr = [1,2,3,4,5] 和对象 var obj = {'0':1, '1':2, '2':3, '3':4, '4':5} :

而且,在PHP中 $arr = [1,2,3,4,5] 与 $obj = ['0'=>1, '1'=>2, '2'=>3, '3'=>4, '4'=>5] 完全等价,这更加剧了我的头晕!今儿个势必搞清楚~

带着这个疑问,我在 ECMA-262标准 9.4.2节 中找到了答案:

通过上面这段话以及已经掌握的知识,我们可以总结出JavaScript中数组与对象的区别与联系主要有:

注:文中如有任何错误,请各位批评指正!