Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中使用动态键名推送数组值_Javascript_Typescript - Fatal编程技术网

在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);