DOM中有一组这样的input节点,假设现在只有一个:
<input class="js_count" pid="3" value="1" />
Salin selepas log masuk
我想获取所有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};
Salin selepas log masuk
但是我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 的数组是真正的数组,而且是一维的