我有一个空对象,我想将一个键值对推送到数组。
required.forEach(function(value){
if(value){
var tempVal = "event_info.schema." + value;
// console.log(tempVal);
var row = {tempVal: [properties[value]['type']]};
}
});
当我在console.log(行)时显示
{ tempVal: [ 'string' ] }
但我希望它是tempVal的内容,而不是" tempVal"
即。如果tempVal = "name"
,我希望行为{ name : ['string']}
。我怎样才能做到这一点?
我试过tempVal.eval()但这是一个错误。你能指出我正确的方向吗?提前谢谢。
答案 0 :(得分:1)
对象也可以用括号编制索引。
tempVal = 'someString';
var obj = {};
obj[tempVal] = ['myArrayOfOneString'];
console.log(obj) // {'someString': ['myArrayOfOneString']}
请注意,obj.something
相当于object['something']
答案 1 :(得分:0)
您必须使用数组表示法动态设置属性,如下所示:
var row = {};
row[tempVal] = [properties[value]['type']];
编辑:正如评论者指出的那样,你可以将它浓缩为一行(仅限ES6):
var row = {[tempVal]: [properties[value]['type']]}
答案 2 :(得分:0)
这应该可以满足您的需求:
var
event_info = {
schema: {
name: "Yoda",
age: "150"
}
},
properties = {
name: {type: "male"},
age: {type: "old"}
}
//
var value = "name";
//
var tempVal = event_info.schema[value];
var row = {};
row[tempVal] = [properties[value]['type']];
console.log("tempVal:", tempVal);
console.log("row:", row);
console.log("row 'Yoda':", row["Yoda"]);