[英]Push Array values with a dynamic keyname in javascript
我正在使用一個函數將值推入具有兩個參數的數組中。在此,第二個參數指示數組的級別。因此,我需要使用此level
參數值將值推入該數組。
這是我的代碼:
addLevel1(i, level) {
let advArr1 = {};
let nextLevel = parseInt(level)+1
advArr1["level"+level+"_adv_url"] = "";
advArr1["level"+level+"_custom_variables"] = "";
advArr1["level"+level+"_percentage"] = "";
advArr1["level"+level+"_status"] = "";
advArr1["level"+nextLevel] = [];
this.containers[i].level1.push(advArr1);
console.log(this.containers);
};
在這種理解中
this.containers[i].level1.push(advArr1);
我需要第1級的動態谷歌。 即,如果參數級別為1,則應為
this.containers[i].level1.push(advArr1);
如果參數級別為2,則為
this.containers[i].level2.push(advArr1);
對象的意義在於您可以輕松地按名稱查找屬性。 當您將動態級別變量混入其中時,您將達到以下目的:
const levels = [
{ level1_status: "ok" },
{ level2_status: "wrong" }
];
for(const level of levels) {
// How to get the status here?
level["level" + /*How to get the level?*/ "_status"]
}
現在,您應該具有靜態鍵,因此所有級別都應具有相同的鍵。 要區分不同的級別,可以使用level屬性 :
const levels = [
{ level: 1, status: "ok" },
{ level: 2, status: "wrong" }
];
for(const level of levels) {
console.log("Level:", level.level); // isn't that simple?
console.log("has Status:", level.status); // Wohoo!
}
現在,接下來是containers[i].level1
:如果您在容器上具有一個levels
數組屬性,則可以將其作為containers[i].levels[1]
而不會出現任何問題。 主要好處是,您現在可以輕松地遍歷容器的不同級別: for(const level of container.levels)
。
假設容器具有這樣的數組,則您的代碼可以是:
addLevel(i, level){
this.containers[i].levels[level] = {
level,
nextLevel: level + 1,
advUrl: "",
percentage: 0, // does make more sense than a string, right?
status: "",
};
}
// somewhere:
context.addLevel(/*i*/ 0, /*level*/ 1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.