【问题标题】:Shorcut to storing incremented values in array?在数组中存储增量值的快捷方式?
【发布时间】:2017-10-24 09:32:10
【问题描述】:

这是我目前的代码:

let array = [`1 (1).jgp`,`1 (2).jgp`,`1 (3).jgp`,`1 (4).jgp`,`1 (5).jgp`,`1 (6).jgp`,`1 (7).jgp`,`1 (8).jgp`,`1 (9).jgp`,`1 (10).jgp`,`1 (11).jgp`]
//rest of the code

有没有更有效的数据存储方式?

我试过了:

for (i = 0; i < 12; i++) {
    let array = [`1`+(i)+`.jgp`]
};
//rest of the code

但是,当我尝试调用数组时,它返回: 未捕获的 ReferenceError:未定义数组 在:1:1

我也试过了:

let array = [`1`+(i = 0; i < 12; i++)+`.jgp`]
//rest of the code

但返回:Uncaught SyntaxError: Unexpected token ;

请让我知道我做错了什么?或者我怎样才能让这段代码更有效率。 谢谢,

【问题讨论】:

  • “或者我怎样才能让这段代码更高效。” 定义“高效”。就速度而言,您的第一个代码块是迄今为止最高效的,这并不重要...如果您的意思是内存使用,您必须展示如何使用数组.如果您的意思是代码大小/复杂性,您希望应用什么标准?
  • 为什么你像使用模板文字一样使用反引号,然后像使用普通字符串一样添加字符串?模板文字允许你做类似`1 (${i}).jpg`之类的东西,你不需要添加字符串,这就是它们的全部意义。
  • 为什么要对字符串使用反引号?由于解析内容的开销,不建议在没有变量的字符串中使用模板文字。
  • 只是另一个提示,也许您考虑更改图像的命名结构...
  • 不确定我是否应该将其标记得太宽泛或建议 codereview.SE。我们不会在任何网络上真正做“修复此代码”的问题。您应该将其归结为实际问题,“我如何迭代 12 次”。

标签: javascript arrays loops


【解决方案1】:

您可以使用Array#from 生成数组:

const arr = Array.from({ length: 10 }, (_, i) => `1 (${i + 1}).jgp`);

console.log(arr);

虽然简单的 for 循环也可以:

const array = []; // declare an empty array

for (let i = 1; i <= 10; i++) {
    array.push(`1 (${i}).jgp`); // push each item to the array
};

console.log(array);

【讨论】:

  • 谢谢。我还有一个后续问题。我正在使用您答案的第一部分,它运行良好。我还需要找到一种方法使这个数组无限,这样它就会包含“1 (1-10).jgp”,然后在其中包含另一组相同的数组。像这样:1 (1).jgp,1 (2).jgp,1 (3).jgp,1 (4).jgp,1 (5).jgp,1 (6).jgp,1 (7).jgp,1 (8).jgp,1 (9).jgp,1 (10).jgp,1 (10).jgp,@987654333 ,1 (2).jgp,1 (3).jgp,1 (4).jgp 等等...你能帮我吗?非常感谢!
  • 您可能需要为此使用生成器。但是,由于这是一个新问题,请打开一个新问题。并更详细地描述您想要的东西。另外,请描述这样做的目的。
  • 好的,会的。再次感谢。
【解决方案2】:

有没有更有效的数据存储方式?

您是指以需要较少存储空间的方式存储?

以这种格式存储

var arrayObj = {
  template : "{{i}} ({{i}}).jgp",
  startIndex : 1,
  endIndex : 10
};

或者我怎样才能让这段代码更有效率。

如果不关心使用多少存储,那么只需使用简单的迭代器

var array = [];
for( var counter = 1; counter <= 10; counter++ )
{
  array.push(  "1 ( " + counter + " ).jgp" );
}

【讨论】:

  • 嗨,对不起,我不是很清楚 - 存储不是问题。谢谢。
【解决方案3】:

你可以的

let array = [];
for (let i = 0; i < 12; i++) {
    array.push(`1 (`+i+`).jgp`);
};
console.log(array);

【讨论】:

  • 这些模板文字没有意义,只需使用字符串文字(或正确使用模板文字)。
猜你喜欢
  • 1970-01-01
  • 2012-09-07
  • 2017-01-12
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多