【问题标题】:I would like to fill an array with numbers using javascript with a for loop我想用带有for循环的javascript填充一个数组
【发布时间】:2022-01-18 21:33:05
【问题描述】:

“但我总是把数字加倍。所以[1,1,2,2,3,3 .......]你怎么能做到这一点?我期待着答案。“ 连续一个数字,for循环很好。但是我该如何处理双数呢?

【问题讨论】:

  • 向我们展示您的尝试。
  • 将您的代码从 arr.push(i); 更改为 arr.push(i);arr.push(i); ?
  • @freedom,arr.push(i, i) 怎么了?
  • @tao 什么都没有。如果 OP 难以确定 1x .push 增加了一个值,并且无法自己确定 2x .push 增加了 2 个值,那么为他们提供 最简单 解决方案将帮助他们继续前进。

标签: javascript jquery loops for-loop


【解决方案1】:

要将数组设为 N,请使用:

let N = 10;
Array.from(Array(N).keys())

将任何数组中的每个值加倍:

[...yourArray.map(n => [n, n])].flat()

所以,你的解决方案:

let n = 10;
const a = [...Array.from(Array(n).keys()).map(k => [k, k])].flat()

console.log(a)

要让它从0 开始,而不是1,请相应地更改映射:

let n = 10;
const a = [
  ...Array.from(Array(n).keys())
    .map(k => [k + 1, k + 1])
].flat()

console.log(a)

可以说,最干净的解决方案:

function doubleArrayTo(n) {
  const a = [];
  for (i = 1; i <= n; i++) {
    a.push(i, i);
  }
  return a;
}

console.log(doubleArrayTo(10))

出于好奇,我测试了它们的性能。不出所料,for 循环胜过展开语法:

function doubleFor(n) {
  const a = [];
  for (i = 1; i <= n; i++) {
    a.push(i, i);
  }
  return a;
}
function doubleSpread(n) {
  return [
  ...Array.from(Array(n).keys())
    .map(k => [k + 1, k + 1])
  ].flat()
}

function run_test(fn, value) {
  const t0 = performance.now();
  fn(value);
  return performance.now() - t0;
}

[1e4, 1e5, 1e6, 1e7].map(value => {
  console.log(
    `(${value}): for => ${
      run_test(doubleFor, value)
    } | spread => ${
      run_test(doubleSpread, value)
    }`);
});

【讨论】:

    【解决方案2】:

    遵循此代码

    var array = [];
    for(int i = 0;i <= 10;i++) {
      array.push(i);
      array.push(i);//again
    }
    

    var array = [];
    for (let i = 0; i <= 10; i++) {
      array.push(i,i);
    }
    console.log(array);

    编辑

    您可以对 array.push(i,i,i,....) 使用多输入

    【讨论】:

    • 为什么不array.push(i,i)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2021-12-03
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多