首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从for循环语句中跳出

问从for循环语句中跳出
EN

Stack Overflow用户
提问于 2022-06-17 20:49:40
回答 1查看 73关注 0票数 0

我有一个小问题,因为我不太擅长编码,我有一个代码,它对我很好,但我想改进它。当我的代码找不到任何数据时,我希望它能从循环中出来,并显示这条消息--“拍卖师--需求方--验证器”。

代码语言:javascript
复制
for (i = 1; i < dataValues.length; i++) {
    if (dataValues[i][11] === 'COMMANDE CONFIRMER' && dataValues[i][12] != '' && dataValues[i][13] === '') {
        pasteSheet.appendRow([dataValues[i][0],
            dataValues[i][1],
            dataValues[i][2],
            dataValues[i][3],
            dataValues[i][4],
            dataValues[i][5],
            dataValues[i][6],
            dataValues[i][7],
            dataValues[i][8],
            dataValues[i][9],
            dataValues[i][10],
            dataValues[i][11]]);
      
        var clearRow = i + 2;
        copySheet.getRange('A' + clearRow + ':M' + clearRow).clear();
    }
}

// get destination range
var destination = pasteSheet.getRange(pasteSheet.getLastRow() + 1, 1, max, 1);

// clear source values
Browser.msgBox('Commande Confirmer');
}
EN

回答 1

Stack Overflow用户

发布于 2022-06-17 22:12:54

尽管您可以脱离for循环,但还有其他方法可以提高效率。比中断循环更重要的是尽量减少资源最繁重的进程。查看您的代码,可以避免重复使用appendRow()。

下面是一种更有效的方法来完成您发布的内容:

代码语言:javascript
复制
// From dataValues, only keep rows that match this criteria:
const filteredValues = dataValues.filter(row => row[11] === 'COMMANDE CONFIRMER' && row[12] !== `` && row[13] === ``)

// If there are rows matching the criteria...
if (filteredValues.length) {

  // Get all indexes of these rows...
  const indexes = filteredValues.map(item => dataValues.findIndex(row => row.every((cell, index) => cell === row[index]))+3)
  // and get each row to only include Columns A - M.
  const values = filteredValues.map(item => item.slice(0, 11))

  // For each index stored...
  indexes.forEach(index => {
    // Clear each row at the appropriate index. (Note: If your cells are not formatted, this can be done more efficiently.)
    copySheet.getRange(`A${index}:M${index}`).clear()
  })

  // Set all values at once.
  pasteSheet.getRange(pasteSheet.getLastRow()+1, 1, values.length, values[0].length).setValues(values)

}

Browser.msgBox('Commande Confirmer')

未评论:

代码语言:javascript
复制
const filteredValues = dataValues.filter(row => row[11] === 'COMMANDE CONFIRMER' && row[12] !== `` && row[13] === ``)

if (filteredValues.length) {

  const indexes = filteredValues.map(item => dataValues.findIndex(row => row.every((cell, index) => cell === row[index]))+3)
  const values = filteredValues.map(item => item.slice(0, 11))

  indexes.forEach(index => copySheet.getRange(`A${index}:M${index}`).clear())

  pasteSheet.getRange(pasteSheet.getLastRow()+1, 1, values.length, values[0].length).setValues(values)

}

Browser.msgBox('Commande Confirmer')

了解更多:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72664666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档