从数组复制值时会跳过某些值

时间:2016-04-26 17:19:06

标签: javascript arrays google-sheets

我有一系列项目代码用于匹配项目代码列,因此如果找到匹配的单元格,它会将价格从价格数组复制到价格列。这是代码:

for (z = 3; z < codearray.length; z++) {
    for (w = 0; w < orderingValue.length; w++) {
        if (parseInt(orderingValue[w][codecol]) == parseInt(codearray[0])) {
            copyrow = w + 1;
            orderingss.getRange(copyrow, salescol).setValue(pricearray[0]);
            codearray.shift();
            pricearray.shift();
        }
    }
}

起初我认为代码有效,但我注意到由于某种原因跳过了一些项目代码。我确实确认了代码和价格确实存在于数组中,所以我不确定是什么原因导致跳过。

编辑:我可能找到了真正的原因。我注意到它在代码阵列中发现不匹配的项目代码时会停止复制。一旦我修复了项目代码,一切都很顺利。有没有办法让循环继续或跳过项目代码,如果找不到匹配?

1 个答案:

答案 0 :(得分:1)

这是因为你在循环时删除了数组中的项目。

我的意思是以下一行

codearray.shift();

您可以通过以下解决方案解决此问题

var copiedCodeArray = codearray.slice();
for(z = 3;z<copiedCodeArray.length;z++){
  // paste the rest of the code here