2017-06-21 7 views
0

私は以下に定義されたオブジェクトを持っています。Javascript配列に基づいて動的変数を作成する

var obj = { 'group': ['a', 'b'], 
      'value': 10 
      } 

グループアレイはn個の値を持つことができます。これは単なる例です。 配列の名前を持つ動的変数を作成し、それらの合計を値10に等しく割り当てたいと思います。この特定のオブジェクトの場合、次の結果が必要です。あなたがオブジェクトを代わりに使用することができます

var obj = { 
    'group': [5, 5], 
    'value':function(str){ 
     return this[str].reduce(add) 
    } 
}; 

function add(a,b){ 
    return a+b 
} 

console.log(obj.value('group')) 
+0

詳細を追加してください。 'a = 10'と' b = 0'はあなたが望むものですか?それは 'a + b = 10'を満たす。 – str

+0

なぜそれが必要ですか?あなたはすでに持っているようにオブジェクトを使うことができ、ダイナミックなニーズのための名前空間として使うことができます。 –

+0

どのようなコードを試しましたか?あなたの問題はどこですか?この質問は "有効なstackoverflow"の質問ではないので、https://stackoverflow.com/help/how-to-askを確認してください – Esteban

答えて

0

見て欲しい

var obj = { 
 
    'group': ['a', 'b'], 
 
    'value': 10 
 
} 
 

 
var groupNames = obj.group, 
 
    groupCount = groupNames.length, 
 
    val = obj.value/groupCount, //divide the obj.value to total group count 
 
    resultObj = {}; 
 

 
for (var i in groupNames) { 
 
    resultObj[groupNames[i]] = val; //add properties to resultObj based on group name and assign its value 
 
} 
 

 
//you can use the object properties to access your "dynamically created variables" 
 
for (var i in resultObj) { 
 
    console.log('Your variable name is "' + i + '" and the value is ' + resultObj[i]) 
 
}

注:それはa + b + ... n = obj.valので、私が使用している平均的にロジックが確認されていません。

つまり、 - obj.val/obj.groups.lengthです。

0

First create Variables 
var a, b 
Then assign a + b = 10 

は、同様に、アレイ内のn個の値のために、私は、私は、これはあなたを助けると思うこのコードで

var a,b, ...n 
a+b+....+n = 10 
1

私は

)私は右

var obj = { 
    group: [1, 2, 3], 
    value: function(){ 
     return this.group.reduce((a, b) => a + b, 0); 
    } 
} 

obj.value();//6 

あなたを理解していれば、あなたは、配列をobj.group編集し、関数obj.valueを(呼び出すことによって、この配列の新しい値を取得することができ、あなたのオブジェクト内の関数が必要だと思います

しかし、あなたは、このコード

var a = 1; 
var b = 2; 

var obj = { 
    group: ["a", "b"], 
    value: function(){ 
     return this.group.reduce((v_prev, v_current) => v_prev + eval(v_current), 0); 
    } 
} 

obj.value();//3 

ない最高のアイデアを試すことができ、(理解しにくい原因、再びわからない)あなたは「A」と呼ばれる変数からこの値を作ることを意味するならば、「B」となど使用するeval、しかしそれは動作します。このコードは、変数 "a"と "b"の合計を見つけるでしょう

関連する問題