添加到数组时会创建空数组值

时间:2013-06-03 16:05:28

标签: javascript

我有以下代码:

var changes = new Array();

$(".item_prices").on("blur", function(){
    var item_id = $(this).attr("id");
    var item_price = $(this).html();
    changes[item_id] = item_price;
});

每次输入新值时,我都希望将项目的ID保存为密钥,将价格保存为值。如果我保存ID为4和6且价格分别为1.99和2.99的项目,我会得到以下数组:

  

{,,,, 1.99,,2.99}

如何在不产生空值的情况下添加到数组?

3 个答案:

答案 0 :(得分:2)

使用object,而不是Array

var changes = {};

其余的都一样。

键值应始终保存在对象中。


既然你正在使用jQuery,这是一个未解决的问题的另一个答案, 在可能和简单的情况下使用本机javascript函数,特别是当它更简单时:

var item_id = $(this).attr("id");
var item_price = $(this).html();

可以而且应该是:

var item_id = this.id
var item_price = this.innerHTML;

答案 1 :(得分:2)

您不需要数组,一个简单的对象将为您形成一组键值对:

var changes = {};

如果/何时列举这些变化:

for (var name in changes) {
  if (changes.hasOwnProperty(name)) {
    var value = changes[name];
    ...
  }
}

答案 2 :(得分:0)

Array是对象的特例,其元素具有连续整数键。您没有连续的密钥,因此Array为您填补空白。

使用准系统Object代替:

var changes = {};