arrays - 有没有办法在谷歌应用脚本中过滤字符串数组?
问题描述
我正在尝试过滤由 NaN 和一个字符串元素组成的数组“employee_name”,以排除字符串以外的任何元素。上下文是我有一个包含员工出生日期的电子表格,并且我正在发送电子邮件通知,以防从今天起两天后有生日。我的变量如下所示:
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Employees');
var range = ss.getRange(2, 1, ss.getLastRow()-1, 1); // column containing the birth dates
var birthdates = range.getValues(); // get the `values` of birth date column
var today = new Date ();
var today = new Date(today.getTime());
var secondDate = new Date(today.getTime() + 48 * 60 * 60 * 1000);
var employee_name = new Array(birthdates.length-1);
和循环:
for (var i=0;i<=birthdates.length-1;i=i+1){
var fDate = new Date(birthdates[i][0]);
if (fDate.getDate() == secondDate.getDate() &&
fDate.getMonth() == secondDate.getMonth()){
//define variables for outgoing email
for (var j=0; j<=birthdates.length-1;j=j+1){
employee_name[j] = [NaN];
}
employee_name[i] = ss.getRange(i+2,6);
employee_name[i] = employee_name[i].getValues();
}
}
之后有问题的数组看起来像这样
Logger.log(employee_name);
[[[Mia-Angelica]], [NaN], [NaN], [NaN], ..., [NaN]] 我已经尝试过过滤器(布尔值),但这不起作用:
employee_name_filtered = employee_name.filter(Boolean);
Logger.log(employee_name_filtered);
返回 [[[Mia-Angelica]]、[NaN]、[NaN]、[NaN]、...、[NaN]]。我也尝试用数值(而不是 NaN)填充非字符串数组条目,然后应用
employee_name_filtered = employee_name.filter(isFinite);
Logger.log(employee_name_filtered);
返回 [[1.0], [2.0], [3.0], ..., [72.0]],所以这个过滤器方法是有效的,但是我需要它的“逆”,因为我想保留字符串。
我需要数组中的数组将值存储在满足条件的计数器变量的位置(类似于如何在 Google 应用程序脚本中使用 For 循环将数据存储在数组中 - 按值传递数组)。
这是我第一次在 SO 上发布问题,所以如果我忽略了任何关于发布的“规则”,请告诉我,我会提供更多信息。任何帮助将不胜感激!
编辑:
最后我想收到的只是[[Mia-Angelica]]。
解决方案
您正在使用二维数组的数组 - 这意味着它是一个数组数组,因此filter
您使用的方法不能以相同的方式应用。
为此,我建议您尝试以下代码段。
function cleanArray() {
var initialArray = [
['Mia-Angelica'],
['Space'],
['2'],
[NaN],
[NaN],
[NaN],
[NaN]
];
var finalArray = [];
for (let i = 0; i < initialArray.length; i++) {
var midArray = initialArray[i].filter(item => (Number.isFinite(item) && item.id !== 0) || !Object.is(item, NaN));
finalArray.push(midArray);
}
console.log(finalArray.filter(item => item != ''));
}
笔记
请记住,这getValues
将返回一个Object[][]
二维值数组。
参考
推荐阅读
- node.js - 如何将字符串附加到 URL
- solidity - 导入 OpenZeppelin 的 ERC721Full.sol 库时出现解析错误
- javascript - javascript变量中的转义连字符
- database - Azure DevOps CSV 工件到 Azure 数据库
- mysql - 在特定值的分区上查找最小值和最大值的 SQL 查询
- codenameone - 当通过右侧工具栏菜单表单修改首选项时,ToastBar 消息确认将显示在其下方的表单中
- sql-server - 使用 Informatica (IICS) 数据迁移性能问题的 SQL Server 到雪花
- laravel - 向生产服务器 Vue.js 添加新组件时出错
- java - 在没有 ThreadLocal 的情况下实现 SecurityService 以与 Kotlin 协程一起使用
- angular - 与textarea的primeng floatlabel问题