我有以下代码:
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}
如何在不产生空值的情况下添加到数组?
答案 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 = {};