2016-12-29 95 views
1
var thisdata = $.jStorage.get(something); 
var nameChi = "nameChi" + i; 
var name = "name" + i; 
var brought = "brought" + i; 
var amount = "amount" + i; 
var np = "np" + i; 
var num = "num" + i; 

上面是我想簡化的工作代碼。我嘗試將個別分配轉換爲以下代碼的for循環:使用for循環更新數組值來簡化javascript

thisdata = $.jStorage.get(something); 
var generateid = ['thisdata', 'nameChi', 'name', 'brought', 'amount', 'np', 'num'] 

for (var a in generateid){ 
    var generateid[a] = generateid[a] + i 
} 

但是,這不起作用。任何人都可以幫我解決這個問題嗎?非常感謝!!

+0

您不能像這樣創建動態變量。只要將值分配給另一個數組 – Phil

+0

^^如上所述。您無法創建動態變量,但可以使用動態屬性創建對象。這與你正在嘗試的東西很接近 –

+0

這裏有很多東西 - 使用for-in迭代數組,在試圖改變數組時使用'var'關鍵字,以及可能誤解何時使用對象。 – Harangue

回答

0

你可以用解構賦值,Array.prototype.map()

var generated = ["nameChi", "name", "brought", "amount", "np", "num"] 
       .map((n /*,i*/) => n + i); 
var [nameChi, name, brought, amount, np, num] = generated; 
2

試試這個

var generateid = ['thisdata', 'nameChi', 'name', 'brought', 'amount', 'np', 'num'] 
generateid = generateid.map(each => each + i); 

這是如何工作的?

  • map創建函數的結果產生一個新陣列
  • each => each + i是一個匿名函數,增加了i每個元素
+0

你理解錯誤的問題 –

+1

'i'從哪裏來? – Phil

+1

從哪裏來的問題給出的例子... – akuhn

0

在您的代碼中,索引是分配的問題,請使用以下代碼Ë使用,

var val; 
var generateid = ['thisdata', 'nameChi', 'name', 'brought', 'amount', 'np', 'num']; 
var index=0; 
for (val of generateid) { 
    generateid [index]=val + "i" 
} 

如何工作,

  1. 在每一個for循環索引將增加,所以,你可以找到使用該索引值的插入索引。
0

試試這個會有用。

var ids = ["thisdata", "nameChi", "name", "brought", "amount", "np", "num"]; 
var generateid = {}; 
for(var i = 0; i < ids.length; i++){ 
     generateid[ids[i]] = ids[i] + i; 
}