2

我有以下代码:

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}

如何添加到数组而不产生空值?

4

3 回答 3

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;
于 2013-06-03T16:06:35.663 回答
2

你不需要一个数组,一个简单的对象会为你形成一个键值对的集合:

var changes = {};

如果 / 到了列举这些变化的时候:

for (var name in changes) {
  if (changes.hasOwnProperty(name)) {
    var value = changes[name];
    ...
  }
}
于 2013-06-03T16:06:36.537 回答
0

Arrays 是对象的一种特殊情况,其元素具有连续的整数键。您没有连续的密钥,因此Array为您“填补空白”。

改用准系统Object

var changes = {};
于 2013-06-03T16:09:55.490 回答