>백엔드 개발 >PHP 튜토리얼 >js中Array对象疑问

js中Array对象疑问

WBOY
WBOY원래의
2016-06-23 13:56:371129검색

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으로 문의하세요.