繁体   English   中英

为对象属性创建动态名称

[英]Create dynamic name for object properties

我有以下功能:

function renderCategoryList (receivedCategories) {
        var allCategories = [];
        for (var i in receivedCategories) {
            var category = {}
            category.categoryName = receivedCategories[i].Name;
            category.categoryId = receivedCategories[i].Id;
            category.categoryParentCategoryId = receivedCategories[i].ParentCategoryId;
            if (receivedCategories[i].ParentCategoryId != null) {
                var parentLevel = 0;
                var parentId = receivedCategories[i].ParentCategoryId;
                for (var z = 0; receivedCategories.length > z; z++) {
                    var parentName = "parentName" + parentLevel;
                    if (receivedCategories[z].Id == parentId) {
                        category.parentName = receivedCategories[z].Name; // the "category.parentName" should be dynamic. At first run this should be category.parentName0. 
                        parentId = receivedCategories[z].ParentCategoryId
                        var parentExists = true;
                        parentLevel++; //if a parentId exists this should raise the level with +1 and therefore at the next run the name should be "category.parentName1". 
                        z = 0;
                    }
                }
            }
            allCategories.push(category);
        }
        return allCategories;
}

我正在尝试为category的变量parentName创建一个动态名称。 在第一次运行for循环时,此变量的名称应为parentName0第二次运行时,其名称应为parentName1 ,依此类推,直到receivedCategories[i].ParentCategoryIdnull

上面显示的方法将忽略var parentName = "parentName" + parentLevel; 因此,在循环的每次运行中, category.parentName被覆盖。

如何使categoryparentName变量动态? 我希望我已经以一种可以理解的方式对此进行了解释。 否则,请告诉我,以便我进行详细说明。

方括号表示法:

var parentLevel = 0;

function renderCategoryList (receivedCategories) {
    ...
    category["parentName" + parentLevel] = receivedCategories[z].Name;
    parentLevel++;
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM