数组中的数据可以为对象
用 .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"}]
}
从上面的结构来看,是一个对象里面的第一项是个属性,第二项是一个数组,第三个是包含有多个对象的数组。调用起来,也是一层一层访问,对象的属性用.(点)叠加,数组用 [下标] 来访问。
方法/步骤
新建一个html文件,命名为test.html,用于讲解JavaScript如何比较两个数组的内容是否相同。
请点击输入图片描述
在js标签内,使用“[]”创建两个数组,分别保存在变量a和变量b中。
请点击输入图片描述
在js标签内,再创建一个变量temp,初始值为1,用于记录数组是否相同。当它为1时,表示两个数组相同,当它为0时,表示两个数组为不相同。
请点击输入图片描述
在js标签内,首先通过length属性分别获得两个数组的长度,使用if语句判断两个数组的长度是否相等,如果不相等,temp变量为0。
请点击输入图片描述
在js标签内,如果两个数组长度相等,则使用for循环遍历两个数组内的每一个元素,通过if语句逐个判断元素是否相等,若有数组元素不相等,temp变量为0。
请点击输入图片描述
在js标签内,使用if判断temp值,当temp为1时,使用alert()方法提示“两个数组相同”,否则,提示“两个数组不相同”。
请点击输入图片描述
在浏览器打开test.html文件,查看实现的效果。
请点击输入图片描述
一直以来穿梭于前端后端之间,突然间发现自己对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中数组与对象的区别与联系主要有:
注:文中如有任何错误,请各位批评指正!