[英]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].ParentCategoryId
为null
。
上面显示的方法将忽略var parentName = "parentName" + parentLevel;
因此,在循环的每次运行中, category.parentName
被覆盖。
如何使category
的parentName
变量动态? 我希望我已经以一种可以理解的方式对此进行了解释。 否则,请告诉我,以便我进行详细说明。
方括号表示法:
var parentLevel = 0;
function renderCategoryList (receivedCategories) {
...
category["parentName" + parentLevel] = receivedCategories[z].Name;
parentLevel++;
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.