命名;在javascript中动态创建变量

命名;在javascript中动态创建变量,javascript,arrays,variables,naming,Javascript,Arrays,Variables,Naming,为了避免javascript堆问题,我使用了多个数组:family1、family2、family3…、dogs1、dogs2、dogs3。。。使用示例:“family1和dogs1”或“family132和dogs132”创建新数组“results” 如何正确传递“id” let id = 'value here' this.family + id this.dogs + id 到目前为止,我的str本身被推到了新的数组中:t-h-i-s-.-f-a-m-i-l-y-1 for (let

为了避免javascript堆问题,我使用了多个数组:family1、family2、family3…、dogs1、dogs2、dogs3。。。使用示例:“family1和dogs1”或“family132和dogs132”创建新数组“results”

如何正确传递“id”

let  id = 'value here'
this.family + id
this.dogs + id
到目前为止,我的str本身被推到了新的数组中:t-h-i-s-.-f-a-m-i-l-y-1

for (let i = +0; i < +20; i++) {

  const id = 1;
  let str = 'this.family'+id;   // ?
  let str = 'this.dogs'+id;   // ?

  console.log(str);

  const result = {
      familyType: str[i],       // behavior: t-h-i-s-.-f-a-m-i-l-y-1
      protocol: this.dogs1[i],  // expected original behavior
  };

  results.push(result);

}

}
for(设i=+0;i<+20;i++){
常数id=1;
让str='this.family'+id;//?
让str='this.dogs'+id;//?
console.log(str);
常数结果={
家族类型:str[i],//行为:t-h-i-s-.-f-a-m-i-l-y-1
协议:this.dogs1[i],//预期的原始行为
};
结果。推(结果);
}
}
您正在寻找:

let str = this['family'+id]; 
但这通常是一种糟糕的设计模式。不要用递增的数字来命名变量。使用2D数组(即数组作为值),如
this.dog[id][i]
。如果您有“javascript堆问题”,那么它是由其他代码引起的。

您正在寻找:

let str = this['family'+id]; 

但这通常是一种糟糕的设计模式。不要用递增的数字来命名变量。使用2D数组(即数组作为值),如
this.dog[id][i]
。如果您有“javascript堆问题”,那么它是由其他代码引起的。

Use。就像在
这个['family'+id]
中一样,在我看来,这就像一个家庭。为什么你认为存在“堆问题”?@Khauri-谢谢,这是正确的。@Andreas-这确实是一个XY问题:它与npm和/或typescript和/或webpack有关,但还没有通用的解决方案。我的应用程序只有一个service.ts和两个长度为5000的数组,我正在创建一个长度为20的新数组-这应该没有问题。作为回应,我创建了多个短数组,它目前正在工作。就像在
这个['family'+id]
中一样,在我看来,这就像一个家庭。为什么你认为存在“堆问题”?@Khauri-谢谢,这是正确的。@Andreas-这确实是一个XY问题:它与npm和/或typescript和/或webpack有关,但还没有通用的解决方案。我的应用程序只有一个service.ts和两个长度为5000的数组,我正在创建一个长度为20的新数组-这应该没有问题。作为回应,我创建了多个短阵列,目前正在运行。谢谢,我将尝试实现这一点。javascript堆问题在ionic 3中以“字符串太长”的形式出现。数组长度是5000,如果我拆分数组,堆问题就会消失。不客气。注:关于“过长字符串”的ionic3错误(提供可复制的代码),可能值得再问一个问题。ionic3的其他用户可能会遇到同样的错误。这似乎与npm和/或typescript和/或webpack有关,但还没有发布通用的解决方案。我的应用程序只有一个service.ts和两个长度为5000的阵列,我正在创建一个长度为20的新阵列。谢谢,我现在将使用您的解决方案,稍后再实现2D阵列。对于我的用例来说,这种糟糕的设计模式是一个真正的问题还是一个学术问题?这是一个真正的问题,因为您的代码将更难管理。数组还提供了很多好处:动态长度属性、迭代和映射值的方法、排序和查找值。然后,您甚至可以避免使用带有硬编码(20)结束条件的索引。代码将看起来更优雅,更不容易出现bug。谢谢,我将尝试实现这一点。javascript堆问题在ionic 3中以“字符串太长”的形式出现。数组长度是5000,如果我拆分数组,堆问题就会消失。不客气。注:关于“过长字符串”的ionic3错误(提供可复制的代码),可能值得再问一个问题。ionic3的其他用户可能会遇到同样的错误。这似乎与npm和/或typescript和/或webpack有关,但还没有发布通用的解决方案。我的应用程序只有一个service.ts和两个长度为5000的阵列,我正在创建一个长度为20的新阵列。谢谢,我现在将使用您的解决方案,稍后再实现2D阵列。对于我的用例来说,这种糟糕的设计模式是一个真正的问题还是一个学术问题?这是一个真正的问题,因为您的代码将更难管理。数组还提供了很多好处:动态长度属性、迭代和映射值的方法、排序和查找值。然后,您甚至可以避免使用带有硬编码(20)结束条件的索引。代码将看起来更加优雅,不太容易出现bug。