原理上来讲,是js这样设计的,很多弱类型语言都是如此设计。
可是并不能理解为对象跟数组没区别,例如说,你可以使用Array类型方括号的形式访问Object类型数据的属性。但是反过来,不能使用Object的点号访问Array类型数据的内容。
在js里,Key对应Value的数据结构,其实都是Object类型的,Array类型的数据都是一维的,数字下标的数据集合。
另外,二楼给你举得例子是没问题的,非常实用,插一句,还有另一种情况
就是你要访问的key是有空格的,也可以使用这种方式,例如说 people['first name'],这种情况是没法使用点号进行访问的。
最后,一楼的那个理解完全是错误的,这跟JSON没任何关系
声明创建一个数组对象: var arr = new Array() 或者 var arr = []
连接两个或者多个数组,并且返回该数组,语法: array.concat(object,object,......)
通过指定字符(参数)对数据进行分割,返回字符串,参数省略的话则用默认用逗号为分隔符
删除数组的最后一个对象,返回该删除元素的值
向数组末尾添加一个或者多个对象,语法: array.push(newObject1,newObject2,.....)
删除数组的第一个对象,并返回删除的元素
向数组开头添加一个或者多个元素,并返回新的长度
从已知数组中返回指定选中的数据(不包括end 对应的元素),如果省略 end 将复制 start 之后的所有元素,该操作不会修改原数组的数据, slice(start,end)
向数组中删除/添加对象,并返回被删除的元素
splice(index,count,item1,item2,......)
方法用户对数组的排序, sort(sortby) ,sortby可选,必须是函数。如调用方法没有使用参数,则按字母顺序进行排序。
只要有一个满足的就返回true,没有满足的返回false
验证数组中是否每个元素都满足指定的条件
没有返回值,可以不知道数组长度
arr.forEach(function(res,index){ })
返回值组成新数组,原数组不变
过滤通过条件的元素组成一个新数组,原数组不变
查找出第一个符合条件的数组成员,并返回该成员,如果没有找到就返回undefine
找到的是位置,找不到返回 -1
填充, arr.fill(填充的东西,start,end) 包括end