我如何将在for循环内生成的数组推入循环外的空数组?

问题描述 投票:1回答:1

((我知道过去曾问过类似的问题,但我找不到令人满意的答案...对不起!)

大家好,

我在for循环中使用for循环,从而产生了新的数组。

每次运行内循环时,我都希望将结果数组推入预先创建的空数组中。我期待一个数组的数组。

当我通过控制台记录内部循环中生成的每个阵列进行测试时,我期望的所有阵列都将被创建👍。但是,奇怪的是,当我尝试将每个.push()放到预先创建的空数组上时,我最终得到的是一个充满索引号的数组,而不是一个数组(???)。

[如果有人设法遵循该描述,请提供帮助!!非常感谢!

const isColourful = num => {
  const arr = num.toString().split('');

  const blankArr = [];

  const arrayOfArraysMaker = arr => {
    for (let c = 0; c < arr.length; c++) {
      for (let i = 0; i < arr.length; i++) {
        if (i + c > 0) {
          x = i + c;
        } else {
          x = undefined;
        }

        const workingArr = blankArr.push(arr.slice(i, x));
        console.log(blankArr);
      }
    }
  };

  arrayOfArraysMaker(arr);

  return arr;
};

console.log(isColourful(2457));

当我期望以下数组的数组时,返回数字1到16:

[ '2', '4', '5', '7' ]
[]
[]
[]
[ '2' ]
[ '4' ]
[ '5' ]
[ '7' ]
[ '2', '4' ]
[ '4', '5' ]
[ '5', '7' ]
[ '7' ]
[ '2', '4', '5' ]
[ '4', '5', '7' ]
[ '5', '7' ]
[ '7' ]
javascript arrays for-loop push
1个回答
1
投票

您的代码有效,但我想您可能会感到困惑。

const workingArr = blankArr.push(arr.slice(i, x));

此行不执行您可能在想的事情。

数组的push方法返回数组的新长度(documentation here)

如果使用的是push的返回值,那么每次在该数组上调用push()时,您得到的数字都会增加一个,因为该数组每次都会增加一个项目。

这里您完全不应使用push()的返回值,因为它会修改原始数组。

© www.soinside.com 2019 - 2024. All rights reserved.