使用数组项作为变量名

Ussing Array Item as Variable Name

我正在尝试动态创建一系列变量,例如在 for 循环中使用 item[i] 的值,但我不断抛出错误并且不确定我做错了什么,我们将不胜感激。

错误信息如下:

var items[i] = post.items[i]; SyntaxError: Unexpected token [

这是我的代码:

items = ["item1", "Item2", "Item3"]         
for (var i = 0;  i < items.length; i++){
    if (post[items[i]]) {
        var items[i] = post.items[i];
        console.log(items[i]);
    } else {
        response.writeHead(400, {"X-Reason": items[i] + "Is Not Set"});
        response.end();
        return;
    }
}

var用于声明一个new变量。

您正在尝试修改存储在 现有 变量中的对象的 属性。

不要使用 var

从这一行中删除 var

var items[i] = post.items[i];

至:

items[i] = post.items[i];

属性赋值不使用也不能使用变量声明(var).

如果我对问题的理解正确,这将满足您的要求...

items = ["item1", "item2", "item3"];
for (var i = 0;  i < items.length; i++){
    if (post[items[i]]) {
        window[items[i]] = post[items[i]];
    } else {
        response.writeHead(400, {"X-Reason": items[i] + " is Not Set"});
        response.end();
        return;
    }
}

这是代码片段中的一个版本,其中包含一个 post 变量,因此您可以看到结果...

var post = {
  item1: "This is item 1",
  item3: "This is item 3"
};

var items = ["item1", "item2", "item3"];

for (var i = 0;  i < items.length; i++){
  if (post[items[i]]) {
    window[items[i]] = post[items[i]];
  } else {
    console.log("X-Reason:" + items[i] + " is not set");
  }
}

console.log(item1);
console.log(item3);

现在 "why" 为什么要这样做是您真正应该问的问题,但这将满足您的要求。我怀疑可能有更好的方法来实现您真正需要的。

注意。确保您注意 items 数组中的变量名称。在此示例中,我将它们全部更改为小写 - 我建议您也这样做。