在javascript中使用动态键名推送数组值
我正在使用一个函数将值推送到带有两个参数的数组中。在这个函数中,第二个参数表示数组的级别。因此我需要使用这个在javascript中使用动态键名推送数组值,javascript,typescript,Javascript,Typescript,我正在使用一个函数将值推送到带有两个参数的数组中。在这个函数中,第二个参数表示数组的级别。因此我需要使用这个levelparams值将值推送到该数组中 这是我的密码: 在这方面 this.containers[i].level1.push(advArr1); 我需要一级的动力阀。i、 e.如果参数级别为1,则应为 this.containers[i].level1.push(advArr1); 如果参数级别为2,则为 this.containers[i].level2.push(advAr
level
params值将值推送到该数组中
这是我的密码:
在这方面
this.containers[i].level1.push(advArr1);
我需要一级的动力阀。i、 e.如果参数级别为1,则应为
this.containers[i].level1.push(advArr1);
如果参数级别为2,则为
this.containers[i].level2.push(advArr1);
您可以使用而不是使用点表示法:
this.containers[i][level].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"]
}
现在,您应该具有静态关键点,因此所有级别都应该具有相同的关键点。要区分不同的标高,可以使用标高属性:
现在接下来是containers[i].level1
thing:如果容器上有levels
array属性,您可以作为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);
使用与上面使用的相同语法。使用数组括号表示法而不是属性表示法。您可能应该创建一个嵌套的对象数组,而不是这样的键。您是否有一些数据可以查看所需的结构?ExperimentV4Component.html:184错误类型错误:无法读取未定义的对象的属性“push”,如
this.containers[i]
没有level1
属性。console.log(this.containers[i])
显示了什么?我收到错误类型错误:无法设置未定义错误的属性“1”
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!
}
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);