推入我的 javascript 数组

Push in my javascript array

我的 JSlink 代码需要一些帮助。

我用过这段代码,效果很好:

var Fields = {
    "Continent": {
            "NewForm": FieldTemplate,
            "EditForm": FieldTemplate
    },
    "Country": {
            "NewForm": FieldTemplate,
            "EditForm": FieldTemplate
    },
    "City": {
            "NewForm": FieldTemplate,
            "EditForm": FieldTemplate
    }
};

但我想让它动态化,所以我尝试了这个:

for (var i = 0; i < fields.length; i++){
    Fields.push(fields[i].name: {
        "NewForm": countryFieldTemplate,
         "EditForm": continentFieldTemplate
    });
}

在for循环中,fields是一个包含"Continent"、"Country"和"City"的数组,但我的代码不起作用,我想知道为什么。 提前致谢。

您可以使用以下语法在 JavaScript 对象上创建属性:

Object[propertyName] = propertyValue;

所以这应该有效:

var Fields = {};
for (var i = 0; i < fields.length; i++){
    Fields[fields[i]] = {
        "NewForm": countryFieldTemplate,
         "EditForm": continentFieldTemplate
    };
}

其中 fields 是:

var fields = ["Continent", "Country", "City"]
// Fields needs to be an object rather than an array
var Fields = {};

// loop over your fields array
for (var i = 0; i < fields.length; i++){

    // then just assign each field as the key to the Fields object
    Fields[fields[i]] = {
       NewForm: countryFieldTemplate,
       EditForm: continentFieldTemplate
    };
}

DEMO