2017-06-21 51 views
0

經過一小時的搜索後,我完全搞不清楚如何在JS中創建一個關聯數組(我知道它實際上是一個對象)。我想通過我的頁面上的元素構建一個關聯數組/對象我這樣循環:如何通過循環創建關聯數組(並通過另一個獲取其內容)?

var array_modules = {}; 
$('.module').each(function() { 
    var this_element = $(this); 
    var module_top = this_element.data('top'); 
    var module_bottom = this_element.data('bottom'); 
    array_modules.push({'top': module_top, 'bottom': module_bottom}); 
}); 

而在其他地方,我想找回我的陣列因此內容:

for (var index in array_modules) { 
    var top = array_modules['top']; 
    var bottom = array_modules['bottom']; 
    alert('top = ' + top + ' and bottom = ' + bottom); 
} 

這些都不起作用。我究竟做錯了什麼?

回答

1

在你的代碼的第一部分使用的是array_modules作爲只是一個數組,而不是聯想,只是使用array_modules = [];在第二部分你迭代關聯數組,但它應該是array_modules[index]['top']。儘管如此,通過改變陣列只需製作一個forEach循環。

無論如何,這是我會做什麼:

var array_modules = []; 

$('.module').each(function() { 
    array_modules.push($(this).data()); 
}); 

array_modules.forEach(function(data){ 
    console.log(data.top, data.bottom); 
}) 
2

你可以把數據轉換成只有一個數組。我希望下面的代碼適合你。

var array_modules = []; 
$('.module').each(function() { 
    var this_element = $(this); 
    var module_top = this_element.data('top'); 
    var module_bottom = this_element.data('bottom'); 
    array_modules.push({'top': module_top, 'bottom': module_bottom}); 
}); 
for (var index in array_modules) { 
    var top = array_modules[index]['top']; 
    var bottom = array_modules[index]['bottom']; 
    alert('top = ' + top + ' and bottom = ' + bottom); 
} 

這將創建關聯的對象數組

+0

謝謝,正確的答案,但@juvian給它前面,所以我不得不驗證他說句公道話.. – drake035

+0

爽!樂於幫助 –

相關問題