2016-12-29 9 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

各要素にiを追加する無名関数である関数の結果を使用して新しい配列を作成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あなたは分割代入を使用することができます
+0

質問が間違っていると理解しました –

+1

「私」はどこから来たのですか? – 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. がインクリメントされます、ですから、そのインデックス値を使用して挿入インデックスを見つけることができます。
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; 
} 
関連する問題