2013-09-24 38 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