Google Web App 将单元素数组视为单个字符的数组
google web app treating single-element array as array of individual characters
我正在使用Google Apps Script构建一个Web应用程序。 它目前由一个HTML表单组成,该表单将表单数据传递给GAS函数,该函数根据表单数据从Google电子表格中检索某些信息。 然后,它将电子表格数据返回到 HTML 端并打印出一个列表。
HTML 表单的一部分是一组复选框,如下所示:
<input type="checkbox" name="stage" value="startup" id="startup" />
<label for="startup">Startup</label><br>
<input type="checkbox" name="stage" value="yrs210" id="yrs210" />
<label for="yrs210">Years 2-10</label><br>
<input type="checkbox" name="stage" value="experienced" id="experienced" />
<label for="experienced">Experienced</label><br>
etc...
复选框values
与电子表格中特定列的内容进行比较,并用于确定要返回的数据。
长话短说(too late)
,当选中多个复选框时,它会按预期工作。 但是,当只选中一个时,它不会被视为数组中的单个元素,而是被视为由每个字符组成的数组。 例如,"startup"
变得["s","t","a","r","t","u","p"]
。 然后我的脚本在电子表格中搜索这些字母中的每一个,当然有很多匹配项。
这可能是我在尝试自学JavaScript时错过的非常基本的东西。 有什么指示吗? 想法为什么会发生这种情况?
如果有帮助,这是我脚本的主要部分:
var stage = formObject.stage;
//get spreadsheet contents
var ss = SpreadsheetApp.openById('ID');
var dataSheet = ss.getSheetByName('sheet1');
var dataRange = dataSheet.getDataRange();
var data = dataRange.getValues();
var cStage = 2; //Number of column containing stages
var cOutput = 4; //Number of column containing output
//compare selections to spreadsheet, list matches
var array1 = [];
for(var i = 0; i < stage.length; i++) {
for(var j = 0; j < data.length; j++) {
if(data[j][cStage - 1].indexOf(stage[i]) > -1) {
array1.push(data[j][cOutput - 1]);
}
}
}
//loop to delete duplicate entries
var array = [];
for(var o = 0; o < array1.length; o++) {
if(array.indexOf(array1[o]) == -1) {
array.push(array1[o]);
}
}
return array;
我认为这看起来相当愚蠢,但我正在使用我所知道的,除了这个问题之外,它大部分都有效。 我愿意接受任何和所有的建议,特别是关于我的单元素数组被拆分为单字符元素数组的问题。
谢谢!
选中多个复选框时,该值将按预期作为字符串数组传递。但是,如果仅选中一个复选框,则该值将作为字符串而不是数组传递。
然后,您的代码将字符串视为数组,这会导致您循环访问各个字符。
您可以使用 Array.isArray() 检查您是否正在处理 Array,然后相应地调整代码以处理字符串。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
您可以使用类似以下示例的行将纯字符串放入 Array 中,而无需对其他代码进行重大修改:
if(!Array.isArray(result)) result = [result];
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 数组在单个输入中返回
- 从数组/字符串中删除所有小数和单个数字
- 如何创建具有单个元素或元素数组的数组
- Google Web App 将单元素数组视为单个字符的数组
- 基于单个属性从数组中获取唯一对象
- 数组循环以获取单个值
- 使用jQuery deffered.resolveWith()在单个参数中传递数组
- 在 laravel 4 上使用循环将数据数组存储到单个数组中
- 将 CSS 类添加到数组中的单个元素
- 仅包含某些数组值的单个弹出窗口.JavaScript
- 在MongoDB中,从文档中获取单个字段数组的最简单方法是什么
- 来自单个请求的 ajax 请求数组
- 获取数组角度的单个属性
- 使用 lodash 是将数据从数组映射到单个数组的好方法
- 如何在单个语句中的 $$('selector') 数组上使用 PrototypeJS .wrap()
- 在javascript(Angularjs)中将对象数组转换为单个对象
- 更改 JS 数组中的单个对象会更改所有元素
- 从数组中获取所有单个单词
- 从 Web 服务返回单个 json 对象的数组