2013-09-24 74 views
0

我建设JS对象的数组,这是我的结构:设置对象数组键

$("li.user_task").each(function() { 
    tasks.push({ 
     taskid: $(this).data("taskid"), 
     productid: $(this).data("product-id"), 
     productposition: $(this).data("product-position") 
    }); 
}); 

这是工作很好,我对执行console.log输出():

[Object, Object, Object, Object] 
0: Object 
productid: 2 
productposition: 1 
taskid: 150 
__proto__: Object 
1: Object 
productid: 1 
productposition: 1 
taskid: 151 
__proto__: Object 
2: Object 
productid: 2 
productposition: 2 
taskid: 155 
__proto__: Object 
3: Object 
productid: 1 
productposition: 3 
taskid: 157 
__proto__: Object 
length: 4 
__proto__: Array[0] 

我不想让我的密钥从0开始,但在这个例子中,我实际上喜欢将字段“taskid”作为对象的关键字,我怎么能实现这一点?

+2

这些都是从零开始,而不是你的钥匙数组索引。 – maverickosama92

+1

如果您在阵列中使用自定义键例如2键0和1得到一个未定义的数组长度为3(这不是一种习惯) – Bernhard

+0

看起来像你在谈论索引。不是关键。 – Muctadir

回答

1

这应该工作

$("li.user_task").each(function() { 
    tasks[$(this).data("taskid")]=({ 
    taskid: $(this).data("taskid"), 
    productid: $(this).data("product-id"), 
    productposition: $(this).data("product-position") 
}); 
}); 

除非,你的任务id是不是唯一的。

没错作为@Bernhard提到...以整数作为数组..数组的长度不同的关键....

+3

这不太好...试试这个:var test = []; test [150] = {}; console.log(test);然后你知道最新的问题 – Bernhard

+0

@Bernhard ..是的!更新..欢呼声 – bipen