2016-12-19 30 views
-1

我正在嘗試創建一系列動態變量在for循環中使用item[i]的值,但是我不斷髮現錯誤,並且不確定我在做什麼錯誤,任何幫助將不勝感激。是作爲變量名稱的Ussing數組項目

錯誤消息如下:

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; 
    } 
} 
+1

刪除'var'在那一行 –

+0

,但我想創建一個新的變量,與任何物品的價值[i]是什麼? – Mattyboi1670

+1

@ Mattyboi1670:然後這樣做,但那不是代碼的作用。這會創建一個新的變量:var newVariable = items [i] = post.items [i];(但這不是一個好主意;畢竟,你已經有了'items')。 –

回答

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

現在的「爲什麼」,爲什麼你想這樣做纔是真正的追求你應該問,但這會做你所問的。我懷疑可能有更好的方法來實現你真正需要的東西。

注意:確保你對items數組中的變量名稱非常小心。在這個例子中,我將它們全部改爲小寫 - 我建議你也這樣做。

+1

謝謝你的回答,這是我期待做的,雖然從這個問題的其他人的意見我相信我需要重新考慮我的方法。 – Mattyboi1670

+0

我同意 - 很高興聽到你這樣做:) – Archer

0

var用於聲明一個變量。

您正試圖修改存儲在現有變量中的對象的屬性。

請勿使用var

0

從該行中刪除var

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

到:

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

財產分配不使用,不能用變量聲明(var)。