javascript - Map() 函数没有给出预期的结果谷歌脚本
问题描述
我正在尝试学习如何使用 Map(),在 Method1 下面的函数中,该函数运行,即它执行并且不会抛出错误,但它不会更改任何等于它的单元格值Networking - 1
保持1
数据不变
我不明白什么不起作用。
function Method1() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Elements');
var rng = sheet.getDataRange();
var values = rng.getValues();
values = values.map(x => {return x = (x=="Networking - 1" ) ? 1: x;});
sheet.getRange(1,1, values.length, values[0].length).setValues(values);
}
解决方案
问题/说明:
问题是这
values
是一个2D
数组,当您使用单个地图时,它x
代表一行。您不能将一行与单个值进行比较。将类似的东西['','','']
与进行比较是没有意义的''
。因此,您需要找到一种方法来获取此数组的每个元素并将其与字符串值进行比较。我的方法是在另一个地图函数中使用地图。第一个 map 将获取行,第二个 map 将获取每行的元素并将它们与字符串进行比较:
values = values.map(x => x.map(y=>y=="Networking - 1" ? 1: y))
x
将是该行并将成为该行y
中的一个元素。通过这种方式,您可以将元素与单个值进行比较"Networking - 1"
。当您在和其他类似的数组函数中使用单行时
map
,您不需要使用return
and{}
。您还想返回返回值,而不是赋值操作。
解决方案:
function Method1() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Elements');
var rng = sheet.getDataRange();
var values = rng.getValues();
values = values.map(x => x.map(y=>y=="Networking - 1" ? 1: y))
sheet.getRange(1,1, values.length, values[0].length).setValues(values);
}
推荐阅读
- c# - 为什么在这种情况下 C# 使用相同的内存地址?
- laravel - 域上带有 URI 的 Nginx 配置
- rust - 使用带有 trait 的泛型
- swift - 如何在触摸时获取 UIImage 中特定像素的位置(或坐标)
- shell - 使用 awk 提取字段直到字符串
- javascript - ReferenceError:文件夹未定义vue:6
- python - 删除pyspark列表中的单引号
- google-chrome - 当我的网站已经有 https 时,如何修复 Google Chrome 审核最佳实践显示“不使用 HTTP/2 处理其所有资源”
- apache-kafka - 如何从ksql中的ktable获取不同记录的总数
- splunk - Splunk 时间计算问题