首页  >  文章  >  后端开发  >  js中Array对象疑问

js中Array对象疑问

WBOY
WBOY原创
2016-06-23 13:56:371075浏览

DOM中有一组这样的input节点,假设现在只有一个:

<input class="js_count" pid="3" value="1" />


我想获取所有pid和value,组织一个数组或对象传给其他函数
var count = new Array();$('.js_count').each(function(){    var input = $(this);    var pid = input.attr('pid');    var val = input.attr('value');    count[pid] = val;});data = {    count : count};


但是我alert(count)得到的是:,,,1,是在一次count[pid] = val;的瞬间造成的,pid=3,但是从count[0]到count[2]都产生了一个undefined,我把new Array()换成了new Object()就没事了
请问这个是Array对象的特性吗?


回复讨论(解决方案)

是的,是Array对象的特性
会补齐未定义的下标

是的,是Array对象的特性
会补齐未定义的下标



谢谢斑竹
刚查了一些资料,PHP的所有变量,包括N维数组和对象属性,好像全都映射到同一个变量哈希表中,所以php数组可以用字符串索引,用数字索引也不要求连续,不会占用多余内存;而js的Array()好像就是c语言中最基本的数组实现的,不能字符串索引,用到多少数字索引就必须申请多少连续的内存,所以出现一堆undefined。但是有人说js一切皆对象,为什么Array()会这样...搞不明白

php 的数组并不是真正意义的数组,只是用了 array 这个名字
js 的数组是真正的数组,而且是一维的

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn