【问题标题】:Create N length of array with values使用值创建 N 长度的数组
【发布时间】:2021-12-22 21:47:46
【问题描述】:

我正在创建一个长度为 N 的数组,其中填充了值,我正在寻找是否可以改进我的操作方式。

我得到随机数来确定数组项的数量。

我正在做的是:

例如,如果数字是 5。

let array = [];

for (let i = 1; i <= 5; i++) {
  array.push(`item0${i}`)
}

现在,数组将是 ['item01', 'item02, .... 'item05']

这个看起来挺长的,能不能短一点?

谢谢

【问题讨论】:

  • 定义“更短”...更少的字符?线少?它可以在“一行”中完成,但是......编写可读且格式良好的代码。如果您需要更小,请使用专门的工具。
  • @Andreas “如果您需要更小,请使用专门的工具。”这不是问题的重点吗?此外,堆栈溢出的问题是否离题?我不这么认为,因为我确实看到了这个问题的副本,该问题之前在 SO 上有数百个赞成票。指向副本然后玩烫手山芋并发布无用的 cmets 会更好地服务于 OP。
  • @Peilonrayz “这看起来很长,可以用更短的方式完成吗?” - 这不是问题。这只是要求一个 "yes""no" 以及,如果有的话,一个基于意见的答案。 SO范围内的任何内容:What topics can I ask about here?

标签: javascript arrays for-loop


【解决方案1】:

只需使用new Array Constructor

const arr = new Array(5)

然而,这只会创建一个长度为 5 的数组,没有任何条目。要在数组上使用数组方法,您首先必须使用值 fill 数组,或者使用 spread syntax 创建值 undefined 的条目。

如果要预填充数组:

function makeArray(n) {
    return (new Array(n)).fill().map((el,ind) => `item0${ind}`)
}

makeArray(5);

甚至提供回调作为属性,以便您可以更改预填充元素的外观并使用扩展语法来避免.fill() 调用:

function makeArray(n, cb) {
    return [...new Array(n)].map((el,ind) => cb(ind))
}

makeArray(5, (ind) => `item0${ind}`);

【讨论】:

  • @tonimora 是什么让这个选项比简单的 for 循环更“好”,你可以通过查看它来理解它?
猜你喜欢
  • 1970-01-01
  • 2016-04-30
  • 2020-01-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2016-11-11
  • 1970-01-01
  • 2011-11-23
相关资源
最近更新 更多