如何在 Javascript 数组中进行赋值

How to make assignment inside the Javascript array

本文关键字:赋值 数组 Javascript      更新时间:2023-09-26
var events = [
    {id: 100,url: "mc.jsp?id=" + id},
    {id: 200,url: "mc2.jsp?id=" + id},
    {id: 300,url: "mc2.jsp?id=" + id}
]

运行时,url 等于 mc.jsp?id=undefined ,那么如何将 ID (100( 分配给 URL 以获得 mc.jsp?id=100 的值呢?并且还将第二个网址设为mc2.jsp=200,第三个网址设为mc2.jsp?id=300所以我不能在数组之外进行分配。

不能访问构造上的对象文本中的其他属性。你会得到一个undefined,因为你没有可变id。您将需要使用:

var id = 100;
var events = [{"id":id, "url":"mc.jsp?id=" + id}];

或:

var event = {id: 100};
event.url = "mc.jsp?id=" + event.id
var events = [event];

但是你可以定义一个 getter:

var events = [{id: 100, get url() { return "mc.jsp?id="+this.id; } }];

这是非常复杂和难以理解的。也许最好做这样的事情:

function MyEvent(id, mc) {
    this.id = id;
    this.mc = mc;
}
MyEvent.prototype.getUrl = function() {
    return "mc"+this.mc+".jsp?id="+this.id;
};
var events = [new MyEvent(100, ""), new MyEvent(200, "2"), ...];

但是,应该没有这样的问题。如果对数字进行硬编码,为什么不对 url 进行硬编码?如果您不想要冗余,请不要将 id 存储两次,并在每次需要时附加它。

 var id = 100, events = [{id: id, url: "mc.jsp?id=" + id}];
不能

添加id,因为它是属性的名称,而不是变量。你可以做:

var ids = [100,200,300];
var events = [];
for(var i = 0; i < ids.length;i++){
    events[i] = {id: ids[i],url: "mc.jsp?id=" + ids[i]};
}

你可以尝试类似的东西。

var event = {
 'id': 100,
 'url': 'mc.jsp?id=' + event.id
}
var events = [];
events.push(event);