首页 > 解决方案 > 将项目推送到“for of”内的数组未按预期工作

问题描述

我的程序正在获取项目列表(拆分的字符串)并按"-"每个短语开头的数量对它们进行分组,将它们放在变量内的不同级别quantityCreatedArray

由于每次单击按钮都会更改此数字,因此我想将每次更改存储在变量quantityCreatedArray中,

我正在尝试使用该方法将数组推入数组中Array.push()

这整个部分在for of我的代码的另一部分(不重要)所需的结构内,

问题是数组arrayUsed(具有来自变量的所有数组quantityCreatedArray)正在返回一个数组,其中的数组具有变量的最后一次更改quantityCreatedArray......

由于我使用的push方法是将数组放入其中,因此我尝试使用简单的方法arrayUsed将变量直接放入其中,但是结果是一样的...arrayUsedfor

下面是一些示例代码供您测试

menus = [
  "- LEVEL 1",
  "- - LEVEL1-1",
  "- - - LEVEL 1-1-1",
  "- - - LEVEL1-1-2",
  "- - - - LEVEL1-1-2-1",
  "- - - - - LEVEL 1-1-2-1-1",
  "- - - - LEVEL-1-2-2",
  "- - - LEVEL-1-3",
  "- LEVEL2"
];

var quantityCreatedArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
var arrayUsed = [];

for (let item of menus) {
  let itemSplited = item.split(" ");
  let counter = 0;

  while (itemSplited[counter] == "-") {
    counter++;
  }

  for(let i1 = 0;i1<counter;i1++) {
    itemSplited.shift()
  }

  quantityCreatedArray[counter]++
  arrayUsed.push(quantityCreatedArray);
}

console.log(arrayUsed);

quantityCreatedArray我希望记录里面的变量的所有变化arrayUsed,但相反,我得到了它的最后一个变化。

标签: javascript

解决方案


推荐阅读