将数组项作为变量名称

时间:2016-12-19 15:50:10

标签: javascript syntax-error

我正在尝试动态创建一系列变量,例如在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;
    }
}

3 个答案:

答案 0 :(得分:0)

var用于声明 new 变量。

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

请勿使用var

答案 1 :(得分:0)

从此行中删除var

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

为:

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

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

答案 2 :(得分:0)

如果我正确理解了这个问题,那么这就可以做你想要的......

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);

现在你想要这样做的“原因”是你应该问的真正问题,但这会做你所问的。我怀疑可能有更好的方法来实现你真正需要的东西。

NB。确保您对items数组中的变量名称一样小心。在这个例子中我将它们全部改为小写 - 我建议你也这样做。