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

Some values are being skipped when copying value from an array

本文关键字:数组 复制      更新时间:2023-09-26

我有一个项目代码数组,用于与一列项目代码进行匹配,因此如果它找到匹配的单元格,它将价格从价格数组复制到价格列。代码如下:

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();
        }
    }
}

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

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

这是因为

您在循环时删除了数组中的项目。

我的意思是以下行

codearray.shift();

您可以通过解决方案解决此问题,如下所述

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