js中Array对象疑问

智商众筹 2014-05-23 10:41:23
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对象的特性吗?
...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-05-23
  • 打赏
  • 举报
回复
php 的数组并不是真正意义的数组,只是用了 array 这个名字 js 的数组是真正的数组,而且是一维的
智商众筹 2014-05-23
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
是的,是Array对象的特性 会补齐未定义的下标
谢谢斑竹 刚查了一些资料,PHP的所有变量,包括N维数组和对象属性,好像全都映射到同一个变量哈希表中,所以php数组可以用字符串索引,用数字索引也不要求连续,不会占用多余内存;而js的Array()好像就是c语言中最基本的数组实现的,不能字符串索引,用到多少数字索引就必须申请多少连续的内存,所以出现一堆undefined。但是有人说js一切皆对象,为什么Array()会这样...搞不明白
xuzuning 2014-05-23
  • 打赏
  • 举报
回复
是的,是Array对象的特性 会补齐未定义的下标

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧