如何通过循环创建关联数组(并通过另一个循环检索其内容)?

时间:2017-06-21 17:33:19

标签: javascript jquery arrays associative-array

在谷歌搜索了一个小时后,我对如何创建&在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);
}

但这些都不起作用。我做错了什么?

2 个答案:

答案 0 :(得分: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);
}

这会创建一个关联对象数组

答案 1 :(得分: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);
})