2015-07-12 54 views
1

我試圖創建鍵值對並推送到一個數組,但我得到的是[Obj Obj],[Obj Obj]。我創建了一個函數,它傳遞一個名稱和val,用於將鍵和值分配給JavaScript對象。這是我的代碼。不知道我的思念:推送到陣列後輸出[Obj Obj],[Obj Obj]

var currentpos = 1; 
var positions = []; 

function pushToAry(name, val){ 
    var obj = {}; 
    obj[name] = val; 
    positions.push(obj); 
} 

for (i = 1; i < 4; i++) { 
    $('.things').append("<div class='shell'></div>"); 
    var thispos = $('.shell:nth-of-type(' + i + ')').position().left; 
    var currentnum = "currentnum"; 
    currentnum = currentnum + i; 
    pushToAry(currentnum, thispos); 
    currentpos++; 
    alert(positions); 
} 
+3

[Object對象]通常只是字符串表徵的警報需要一個字符串。首先,使用'console.log'而不是'alert'。 (您可以觀察打開開發人員控制檯的結果) – doldt

+1

代碼看起來像是正常工作。預期的結果是什麼?爲什麼要將對象推入數組而不是位置,不會僅僅推動位置值就夠了(因爲您推動的鍵已經是數組中元素的索引)? – JJJ

+0

而不是警報(位置);在Chrome開發者控制檯中嘗試console.log(職位),您將能夠看到對象。 @Hermi –

回答

0

當你調用alert,對象的數組被摺疊成[Object object],這樣你就可以代替這樣做是爲了擴大它裏面的內容:

alert(JSON.stringify(positions)); 

或者更妙的是,你應該打印結果到控制檯窗口,以便您可以檢查您的陣列的更舒適的內容:

console.log(positions); 
+0

謝謝。我希望能夠訪問每個屬性的值 - positions.comment1,positions.comment2等。但是,我在控制檯中收到未定義的響應。 – HermI

+0

它不應該是未定義的,因爲'alert'給你[對象對象]提示。你在哪裏添加了'console.log'? –