【问题标题】:Naming; dynamically create a variable in javascript命名;在javascript中动态创建一个变量
【发布时间】:2018-01-13 11:29:24
【问题描述】:

为避免 javascript 堆问题,我使用多个数组:family1、family2、family3 ...、dogs1、dogs2、dogs3 ... 使用示例:“family1 and dogs1”或“family132 and dogs132”来创建一个新数组“结果”。

如何正确传递“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);

}

}

【问题讨论】:

  • 使用bracket notation。如this['family'+id]
  • 这对我来说就像一个XY problem。为什么你认为存在“堆问题”?
  • @Khauri - 谢谢,这是正确的。
  • @Andreas - 这确实是一个 XY 问题:它与 npm 和/或 typescript 和/或 webpack 有关,但还没有通用的解决方案。我的应用程序只有一个 service.ts 有两个长度为 5000 的数组,我正在创建一个长度为 20 的新数组 - 这应该没问题。作为回应,我创建了多个短数组,它现在正在工作。

标签: javascript arrays variables naming


【解决方案1】:

您正在寻找:

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

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

【讨论】:

  • 谢谢,我会努力实现的。 javascript 堆问题在 ionic 3 中以“字符串太长”的形式出现。数组长度为 5000,如果我拆分数组,堆问题就会消失。
  • 不客气。注意:可能值得问另一个专门针对“太长字符串”ionic3 错误的问题(提供可以复制的代码)。 ionic3 的其他用户可能会遇到同样的错误。
  • 这似乎与 npm 和/或 typescript 和/或 webpack 有关,但尚未发布通用解决方案。我的应用只有一个 service.ts 有两个长度为 5000 的数组,我正在创建一个长度为 20 的新数组。
  • 谢谢,我暂时使用你的解决方案,稍后实现二维数组。对于我的用例来说,这种糟糕的设计模式是真正的问题还是学术问题?
  • 这是一个真正的问题,因为您的代码将更难管理。数组还为您提供了很多好处:动态长度属性、迭代和映射值的方法、排序和查找值。然后,您甚至可以避免使用带有硬编码 (20) 结束条件的索引。代码看起来会更加优雅,并且不容易出现错误。
猜你喜欢
  • 2014-02-24
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
  • 2011-10-27
  • 1970-01-01
相关资源
最近更新 更多