javascript - 如何将 for 循环内生成的数组推送到循环外的空数组中?

标签 javascript arrays for-loop push

(我知道过去有人问过类似的问题,但我找不到满意的答案......抱歉!)

大家好

我在 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' ]

最佳答案

您的代码有效,但我想我明白了您可能感到困惑的地方。

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

这一行和你想的不一样。

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

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

你不应该在这里使用 push() 的返回值,因为它修改了原始数组。

关于javascript - 如何将 for 循环内生成的数组推送到循环外的空数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59432554/

相关文章:

arrays - 传递比实际小的数组

python - 在 Python 中并行化 for 循环以加快算法速度

javascript 在输入字段上添加两个多重事件

javascript - 解析html5 <time> datetime属性

javascript - 如何使用传递给 React 函数的参数来设置状态

javascript - 我可以更改循环中使用的 ID 吗?需要在 6 次迭代中更改 1 个字符

python - python中如果value是key则删除字典的value

php - 我需要一个可以与 PHP(服务器端)和 Javascript(客户端)一起使用的模板系统(基于 XML)

java - 二维数组中的 If 语句

javascript - foo in bar - 'in' 运算符 javascript?