将对象的内容推送到数组而不是对象的名称

时间:2017-10-25 03:26:51

标签: javascript arrays node.js

我有一个空对象,我想将一个键值对推送到数组。

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()但这是一个错误。你能指出我正确的方向吗?提前谢谢。

3 个答案:

答案 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"]);