访问存储在数组中的对象的属性

时间:2019-05-28 15:38:39

标签: javascript html arrays object

这是我的情况:我已经知道我需要十五个对象来存储事件数据,所以我只声明了十五个变量:

var e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, 15;

function Event(title, content, logo, logo_in_black) {
    this.title = title;
    this.content = content;
    this.logo = logo;
    this.logo_in_black = logo_in_black;
}

根据用户的点击,我根据用户的点击将数据动态分配给对象:

e1 = new Event('Nike', 'BUY ONE GET ONE FOR FREE', logo_url, logo_url2);

然后在视图上显示结果:

$('#e-1').css('background-image', "url('" + e1.logo + "')");

我需要做15次相同的操作才能将每个事件信息放入单个块中,例如:<div id="e-1">!因此,我只是尝试了以下方法,但我认为这一定是解决方案:我在数组中放置了15个对象。

var e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15;
var events = [e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15];

分配数据并在视图上显示:

e1 = new Event('Nike', 'BUY ONE GET ONE FOR FREE', logo_url, logo_url2);
e2 = ...
e3 = ...

for (var i = 0; i < 15; i ++) {
    $('#e-' + (i + 1)).css('background-image', "url('" + events[i].logo + "')");
}

但是我尝试访问属性的方式是错误的:events[i].logo 谁能告诉我为什么这行不通? 非常感谢!

1 个答案:

答案 0 :(得分:3)

在将变量放入数组之前,必须先分配变量 。数组分配使用变量的当前值,不会使数组隐式引用变量。

但是首先不需要这些变量,只需将其直接分配给数组即可:

var events = [
    new Event('Nike', 'BUY ONE GET ONE FOR FREE', logo_url, logo_url2),
    ...
];

每当您发现自己使用数字后缀命名变量时,几乎应该总是使用数组代替。