簡體   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