Javascript 如何查找已应用if语句的行的最大值和最小值?
所以我昨天得到了这个,它工作得非常出色,但是我被要求在我下面的函数应用的行中加粗最小值和最大值。我有3个不同的数据集,在不同的行上有不同的值,所以我不能要求它在第7行加粗。我需要证明这可以应用于任何给定的数据。是否有人知道如何实现这一点,我的数据是C3:W16之间的所有3个数据集,以避免混淆Javascript 如何查找已应用if语句的行的最大值和最小值?,javascript,google-apps-script,google-sheets,max,min,Javascript,Google Apps Script,Google Sheets,Max,Min,所以我昨天得到了这个,它工作得非常出色,但是我被要求在我下面的函数应用的行中加粗最小值和最大值。我有3个不同的数据集,在不同的行上有不同的值,所以我不能要求它在第7行加粗。我需要证明这可以应用于任何给定的数据。是否有人知道如何实现这一点,我的数据是C3:W16之间的所有3个数据集,以避免混淆 函数searchOutput(){ var sheet=SpreadsheetApp.getActiveSheet(); var数据=sheet.getRange(“C3:W16”).getValues(
函数searchOutput(){
var sheet=SpreadsheetApp.getActiveSheet();
var数据=sheet.getRange(“C3:W16”).getValues();
data.forEach(函数(第一行)
{row.forEach(函数(cell,j)
{如果(单元格>=5&&row[j+1]<5){sheet.getRange(i+3,j+3,1,2).setFontWeight(“粗体”)
{if(cell Math.max(…row)).getRange(i+3,j+3,1,1).setFontWeight(“粗体”)
{if(cell Math.min(…row)).getRange(i+3,j+3,1,1).setFontWeight(“bold”)})
}
优化处理多行有三个步骤:
getRange()
和setFontWeight()
,在计算上非常昂贵
因此,您首先需要弄清楚哪些批量getter和setter方法适用于您的用例
在您的场景中,您需要在一行中找到值的最小值和最大值,因此这是必须的。你想更新这些单元格的字体大小,所以也有必要
提示如果需要为其他资源找到getter或setter方法,请查看该对象的文档。一般规则是,任何前缀为get
或set
并以s
结尾的方法都是批量getter或setter方法
既然您知道了需要什么,那么编写代码就相当简单了:
函数boldMinMax(){
var range=SpreadsheetApp.getActiveSheet().getRange(“C3:W16”);
//使用getter方法批量获取行值数组和字体权重数组
var valueRows=range.getValues();
var fontWeightRows=range.getFontWeights();
//处理获取的数组更新最小和最大单元格的字体权重
valuesRows.forEach(函数(valueRow、rowIndex){
//每行只需计算一次最小值和最大值
var min=Math.min(…valueRow);
var max=数学最大值(…valueRow);
//查找并更新fontWeightRow
var fontWeightRow=fontWeightRows[rowIndex];
valueRow.forEach(函数(值、单元格索引){
如果(值==最小值| |值==最大值){
fontWeightRow[cellIndex]=“粗体”;
}
});
});
//将更新的字体权重写回工作表
range.setFontWeights(fontWeightRows);
}
这应该足以让您进行分类。如果存在多个最大值和最小值怎么办?例如,假设行中的最大值为10,您有两个10。你想把它们都加粗吗?是的,但是当函数沿着列运行时,我需要它先找到最大值,然后再找到最小值。如果最小值在最大值之前,那么表示的数据将意味着该数据表示的功率输出将不起作用。不幸的是,这对我来说非常混乱。您能否提供一个示例输入和预期输出?它不必是全量程。只需提供3x3虚拟单元的屏幕截图,并向我们显示预期输出。一张图片抵得上一千个单词,所以我的函数,你看到的是使值大于5,你可以很容易地找到最大或最小的一行使用和。扩展语法将自动将数组的内容作为参数映射到这些函数。然后可以循环行中的项目,检查是否与最小值或最大值相等,并更新单元格的格式。