繁体   English   中英

Google Apps 脚本 - For Loop 问题适用于虚假陈述而不是真实

[英]Google Apps Scripts - For Loop Issue works on false statement instead of true

/** -- For Loop to start pairing VIN numbers to parts list -- **/
  console.log('CompleteVIN: ');
  console.log(completeVIN);
  console.log(completeVIN[1].length);

  console.log('CompleteParts: ');
  console.log(completeParts);
  console.log(completeParts[1].length);

  var vinPartsCombine = [];

  /** For loop */
  for (j = 0; j < completeVIN[1].length; j++) {
    for (i = 0; i < completeParts[0].length; i++){    
      if (completeVIN[1][j] === completeParts[1][i]) {
        vinPartsCombine.push(completeVIN[0][j],completeParts[0][i]);
      };
    };
  };
  console.log(completeVIN[1][j] === completeParts[1][i]);
  console.log(vinPartsCombine);

结果:

CompleteVIN: 
[ [ [ 'KG257653' ],
    [ 'KG250444' ],
    [ 'K1239114' ],
    [ 'FG160157' ],
    [ 'LKA41783' ],
    [ 'LKB72564' ] ],
  [ [ 7653 ],
    [ 444 ],
    [ 9114 ],
    [ 'Estimate_to_Repair' ],
    [ 'transit (1)' ],
    [ 'transit' ] ] ]
6
CompleteParts: 
[ [ [ 'Repl LT Side bracket' ],
    [ 'Repl LT Filler panel US built' ],
    [ 'Repl LT H\'lamp bracket' ],
    [ 'Repl LT Fender' ],
    [ 'Repl LT Nameplate "SILVERADO"' ],
    [ 'Repl Bumper assy single' ],
    [ 'Repl Cover Car' ],
    [ 'Repl Cover Car' ],
    [ 'Repl Applique upper w/o special trim' ],
    [ 'Repl Corrosion protection primer' ],
    [ 'Repl Cover Car' ],
    [ 'Replace LT Fender (Aftermarket)' ],
    [ 'Replace LT Nameplate "SILVERADO"' ],
    [ 'Repl LT Lower molding' ],
    [ 'Repl LT End cap w/o blind spot' ],
    [ 'Repl LT Side extn w/o extended frame' ],
    [ 'Repl LT Bumper outer support' ],
    [ 'Repl LT Bumper inner support' ],
    [ 'Repl LT Bumper' ],
    [ 'Repl Aerial assembly' ],
    [ 'Repl Cover Car' ],
    [ 'Repl Corrosion protection primer' ],
    [ 'Repl Cover Car' ],
    [ 'Repl Cover Car' ],
    [ 'Repl Corrosion protection primer' ] ],
  [ [ 7653 ],
    [ 7653 ],
    [ 7653 ],
    [ 7653 ],
    [ 7653 ],
    [ 7653 ],
    [ 7653 ],
    [ 444 ],
    [ 9114 ],
    [ 9114 ],
    [ 9114 ],
    [ 'Estimate_to_Repair' ],
    [ 'Estimate_to_Repair' ],
    [ 'transit (1)' ],
    [ 'transit (1)' ],
    [ 'transit (1)' ],
    [ 'transit (1)' ],
    [ 'transit (1)' ],
    [ 'transit (1)' ],
    [ 'transit (1)' ],
    [ 'transit (1)' ],
    [ 'transit (1)' ],
    [ 'transit' ],
    [ 'transit' ],
    [ 'transit' ] ] ]
25
true
[]

我的 for 循环不会按我想要的方式工作,但是当我将条件更改为时,= 它会运行。 但不是我想要的 output。

  • CompleteVIN 数组由 VIN #'s 和 Source Names 组成
  • CompleteParts 数组由 Parts 和 Source Names 组成

for 循环是在源匹配时按源搜索每个数组,然后将其推送到 vinPartsCombine 数组,以便将其与 vin 编号和部件描述配对。 在源不匹配之前,它将切换到具有新源名称的下一个 vin 编号元素。

 completeVIN = [[[ 'KG257653' ], [ 'KG250444' ], [ 'K1239114' ], [ 'FG160157' ], [ 'LKA41783' ], [ 'LKB72564' ]], [[ 7653 ], [ 444 ], [ 9114 ], [ 'Estimate_to_Repair' ], [ 'transit (1)' ], [ 'transit' ]]]; CompleteParts = [ [ [ 'Repl LT Side bracket' ], [ 'Repl LT Filler panel US built' ], [ 'Repl LT H\'lamp bracket' ], [ 'Repl LT Fender' ], [ 'Repl LT Nameplate "SILVERADO"' ], [ 'Repl Bumper assy single' ], [ 'Repl Cover Car' ], [ 'Repl Cover Car' ], [ 'Repl Applique upper w/o special trim' ], [ 'Repl Corrosion protection primer' ], [ 'Repl Cover Car' ], [ 'Replace LT Fender (Aftermarket)' ], [ 'Replace LT Nameplate "SILVERADO"' ], [ 'Repl LT Lower molding' ], [ 'Repl LT End cap w/o blind spot' ], [ 'Repl LT Side extn w/o extended frame' ], [ 'Repl LT Bumper outer support' ], [ 'Repl LT Bumper inner support' ], [ 'Repl LT Bumper' ], [ 'Repl Aerial assembly' ], [ 'Repl Cover Car' ], [ 'Repl Corrosion protection primer' ], [ 'Repl Cover Car' ], [ 'Repl Cover Car' ], [ 'Repl Corrosion protection primer' ] ], [ [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 444 ], [ 9114 ], [ 9114 ], [ 9114 ], [ 'Estimate_to_Repair' ], [ 'Estimate_to_Repair' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit' ], [ 'transit' ], [ 'transit' ] ] ]; var vinPartsCombine = []; /** For loop */ for (j = 0; j < completeVIN[1].length; j++) { for (i = 0; i < CompleteParts[1].length; i++){ if (completeVIN[1][j] == CompleteParts[1][i]) { vinPartsCombine.push(completeVIN[0][j],CompleteParts[0][i]); }; }; }; console.log(completeVIN[1][j] === CompleteParts[1][i]); console.log(vinPartsCombine);

首先 Function 在我用来弄清楚发生了什么的电子表格上构建了几个表格。 第二个 function 使用电子表格中的这些表来汇总数据,我认为通过旋转数据以您想要的方式。

function buildtablescript() {
  const completeVin = [[['KG257653'], ['KG250444'], ['K1239114'], ['FG160157'], ['LKA41783'], ['LKB72564']], [[7653], [444], [9114], ['Estimate_to_Repair'], ['transit (1)'], ['transit']]];
  const completeParts = [[['Repl LT Side bracket'], ['Repl LT Filler panel US built'], ['Repl LT H\'lamp bracket'], ['Repl LT Fender'], ['Repl LT Nameplate "SILVERADO"'], ['Repl Bumper assy single'], ['Repl Cover Car'], ['Repl Cover Car'], ['Repl Applique upper w/o special trim'], ['Repl Corrosion protection primer'], ['Repl Cover Car'], ['Replace LT Fender (Aftermarket)'], ['Replace LT Nameplate "SILVERADO"'], ['Repl LT Lower molding'], ['Repl LT End cap w/o blind spot'], ['Repl LT Side extn w/o extended frame'], ['Repl LT Bumper outer support'], ['Repl LT Bumper inner support'], ['Repl LT Bumper'], ['Repl Aerial assembly'], ['Repl Cover Car'], ['Repl Corrosion protection primer'], ['Repl Cover Car'], ['Repl Cover Car'], ['Repl Corrosion protection primer']], [[7653], [7653], [7653], [7653], [7653], [7653], [7653], [444], [9114], [9114], [9114], ['Estimate_to_Repair'], ['Estimate_to_Repair'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit'], ['transit'], ['transit']]];
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet4');
  sh.getDataRange().setFontWeight('normal').setBackground('#ffffff');
  sh.clearContents();
  sh.getRange(1, 1).setValue('CompleteVINs:').setFontWeight('bold').setBackground('lightyellow');
  let nr = sh.getLastRow() + 1;
  sh.getRange(nr, 1, completeVin[0].length, completeVin[0][0].length).setValues(completeVin[0]).setHorizontalAlignment('left');
  sh.getRange(nr, 2, completeVin[1].length, completeVin[1][0].length).setValues(completeVin[1]).setHorizontalAlignment('left');
  SpreadsheetApp.flush();
  nr = sh.getLastRow() + 1;
  sh.getRange(nr, 1).setValue('CompleteParts:').setFontWeight('bold').setBackground('lightyellow');
  SpreadsheetApp.flush();
  nr = sh.getLastRow() + 1;
  sh.getRange(nr, 1, completeParts[0].length, completeParts[0][0].length).setValues(completeParts[0]).setHorizontalAlignment('left');
  sh.getRange(nr, 2, completeParts[1].length, completeParts[1][0].length).setValues(completeParts[1]).setHorizontalAlignment('left');
}

以上function制作的表格:

完成VIN:
KG257653 7653
KG250444 444
K1239114 9114
FG160157 Estimate_to_Repair
LKA41783 过境 (1)
LKB72564 过境
完成部分:
Repl LT 侧支架 7653
Repl LT 填充面板 美国制造 7653
Repl LT H'灯支架 7653
Repl LT 挡泥板 7653
Repl LT 铭牌“SILVERADO” 7653
Repl 保险杠总成单 7653
复盖车 7653
复盖车 444
Repl 贴花鞋面,无特殊饰边 9114
Repl 防腐底漆 9114
复盖车 9114
更换 LT 挡泥板(售后市场) Estimate_to_Repair
替换 LT 铭牌“SILVERADO” Estimate_to_Repair
Repl LT 下成型 过境 (1)
Repl LT 端盖无盲点 过境 (1)
Repl LT Side extn w/o 扩展框架 过境 (1)
Repl LT 保险杠外支撑 过境 (1)
Repl LT 保险杠内支撑 过境 (1)
Repl LT 保险杠 过境 (1)
Repl 空中装配 过境 (1)
复盖车 过境 (1)
Repl 防腐底漆 过境 (1)
复盖车 过境
复盖车 过境
Repl 防腐底漆 过境

现在总结数据的function:

function pivotscript() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet4');
  const cVrow = sh.createTextFinder('CompleteVINs:').findAll()[0].getRow();
  const cProw = sh.createTextFinder('CompleteParts:').findAll()[0].getRow();
  const cVvs = sh.getRange(cVrow + 1, 1, cProw - cVrow - 1, sh.getLastColumn()).getValues();
  const cPvs = sh.getRange(cProw + 1, 1, sh.getLastRow() - cProw - 1, sh.getLastColumn()).getValues();
  const pObj = { pA: [], vA: [] };
  cVvs.forEach((r, i) => {
    if (!pObj.hasOwnProperty(r[1])) {
      pObj[r[1]] = {vin:r[0],partA:[]};
      pObj.pA.push(r[1]);
    } else {
      SpreadsheetApp.getUi().alert('Vin Table has duplicates');
      return;
    }
  });//build the table
  cPvs.forEach((r, i) => {if (pObj.hasOwnProperty(r[1])) {pObj[r[1]].partA.push(r[0]);}});
  let html = '<style>th,td{border:1px solid black;padding:5px;}</style><table><tr><th>Property</th><th>Vin</th><th>Parts</th></tr>';
  pObj.pA.forEach((p,i)=>{
    html+=Utilities.formatString('<tr><td>%s</td><td>%s</td><td>%s</td></tr>',p,pObj[p].vin,pObj[p].partA.join('<br />'));
  });
  html+='</table>'
  SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html).setWidth(800).setHeight(600),'Summary');
}

汇总表对话框:

在此处输入图像描述

我想到了。 我最初通过在元素中添加元素使其变得更加复杂......例如:[0][0][0]。 无论如何,这就是我所做的。

 completeVIN = [[[ 'KG257653' ], [ 'KG250444' ], [ 'K1239114' ], [ 'FG160157' ], [ 'LKA41783' ], [ 'LKB72564' ]], [[ 7653 ], [ 444 ], [ 9114 ], [ 'Estimate_to_Repair' ], [ 'transit (1)' ], [ 'transit' ]]]; completeParts = [ [ [ 'Repl LT Side bracket' ], [ 'Repl LT Filler panel US built' ], [ 'Repl LT H\'lamp bracket' ], [ 'Repl LT Fender' ], [ 'Repl LT Nameplate "SILVERADO"' ], [ 'Repl Bumper assy single' ], [ 'Repl Cover Car' ], [ 'Repl Cover Car' ], [ 'Repl Applique upper w/o special trim' ], [ 'Repl Corrosion protection primer' ], [ 'Repl Cover Car' ], [ 'Replace LT Fender (Aftermarket)' ], [ 'Replace LT Nameplate "SILVERADO"' ], [ 'Repl LT Lower molding' ], [ 'Repl LT End cap w/o blind spot' ], [ 'Repl LT Side extn w/o extended frame' ], [ 'Repl LT Bumper outer support' ], [ 'Repl LT Bumper inner support' ], [ 'Repl LT Bumper' ], [ 'Repl Aerial assembly' ], [ 'Repl Cover Car' ], [ 'Repl Corrosion protection primer' ], [ 'Repl Cover Car' ], [ 'Repl Cover Car' ], [ 'Repl Corrosion protection primer' ] ], [ [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 444 ], [ 9114 ], [ 9114 ], [ 9114 ], [ 'Estimate_to_Repair' ], [ 'Estimate_to_Repair' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit' ], [ 'transit' ], [ 'transit' ] ] ]; var vinPartsCombine = []; /** For loop */ for (j = 0; j < completeVIN[1].length; j++) { for (i = 0; i < completeParts[1].length; i++){ /** console.log(completeVIN[1][j]); console.log(completeParts[1][i]); console.log(typeof(completeVIN[1][j])); console.log(typeof(completeParts[1][i])); */ console.log(completeVIN[1][j][0] == completeParts[1][i][0]); if (completeVIN[1][j][0] == completeParts[1][i][0]) { vinPartsCombine.push([completeVIN[0][j][0],completeParts[0][i][0]]); }; }; }; /** console.log(completeVIN[1][j] === completeParts[1][i]); console.log(typeof(completeVIN[1][0][0])); */ console.log(vinPartsCombine);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM