Pau*_*ray 3 javascript arrays multidimensional-array google-sheets google-apps-script
我正在使用 Google 表格和 Google Apps 脚本。我曾经.getRange().getValues从工作表中抓取用户电子邮件。
收到的数组示例:
[[user1, , ], [user2, user3, ], [user4, user5, user6]]
如您所见,每行(内部数组)最多有三个用户。但是,其中一些单元格为空,导致数组中出现空值。然后,我将每个内部数组输入其中,.addEditors()由于空用户,该数组会引发错误。
我知道我可以遍历每个数组并删除空数组,然后将新数组推入其中.addEditors(),但这会很丑陋,而且效率很低。我没有足够的经验,不知道如何开发更优雅的方式。
有人可以帮助我了解如何以及为什么以尽可能有效的方式解决这个问题吗?谢谢。
注意:虽然看起来该.filter(Boolean)解决方案可能有效,但我只能让它适用于单个数组,而不适用于数组中的数组。
var myFilterArray = myArray.filter(Boolean);
arr.forEach(function(x){
return x.filter(Boolean);
});
Run Code Online (Sandbox Code Playgroud)
如果深度大于一,我无法让它返回修改后的数组。
我知道我可以遍历每个数组并删除空数组......这几乎是您唯一的选择。有一些方法可以让你的代码看起来更干净,但在幕后有些东西必须循环遍历数组。
这是一个使用Array.map()和 的示例Array.filter()
let data = [["bob", , ], ["jake", "john", ""], ["joe", "henry", "morgan"]];
let newData = data.map(x => {
return x.filter(j => j)
})
console.log(newData);Run Code Online (Sandbox Code Playgroud)
使用 ES5 语法
var data = [["bob", , ], ["jake", "john", ""], ["joe", "henry", "morgan"]];
var newData = data.map(function(x) {
return x.filter(function(j) {if (j) return j})
})
console.log(newData);Run Code Online (Sandbox Code Playgroud)