我在下面定义了一个对象。
var obj = { 'group': ['a', 'b'],
'value': 10
}
请注意,组数组可以有n个值。这只是一个例子。 我想创建名称在数组中的动态变量,并将它们的总和分配给值,即10.对于这个特定的对象,我想得到以下结果。
First create Variables
var a, b
Then assign a + b = 10
类似于数组中的n个值,我想要
var a,b, ...n
a+b+....+n = 10
答案 0 :(得分:1)
如果我理解你的话,我认为你的对象需要一个功能
var obj = {
group: [1, 2, 3],
value: function(){
return this.group.reduce((a, b) => a + b, 0);
}
}
obj.value();//6
你可以通过调用函数obj.value()来编辑obj.group数组并获取这个数组的新值
但如果你的意思(再次不确定,因为很难理解)从名为" a"," b"的变量中产生这个值。等等你可以试试这段代码
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
使用eval不是最好的主意,但它有效。这段代码将找到变量的总和" a"和" b"
答案 1 :(得分:0)
看看这段代码我认为这会对你有所帮助:
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'))
答案 2 :(得分: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
。