注意:我对原来的问题做了一些修改,因为我的问题不是字符串中的逗号。
我有一个函数,我一直致力于从一个新数组中排除一个单元格值,这个数组包含一个我正在搜索的字符串。我这么做是为了把
.setHiddenValues
,自
.setVisibleValues
尚未支持/实现。
为了清楚起见,我的要求如下:
当前工作:
-
能处理数字和字符串
-
可以搜索小写和大写。
visibleValueStr
是用户输入的,所以不太敏感。
-
colValueArr
可能有带逗号的字符串。
仍在努力:
-
可视值str
可以是单个值或数组。
-
区分大小写(“apple”与“apple”匹配)
-
不完全匹配(“apple”与“apple and banana”匹配)
以下是我目前在满足/未满足上述条件下的功能:
function getHiddenValueArray(colValueArr,visibleValueArr){
var flatUniqArr = colValueArr.map(function(e){return e[0].toString();})
.filter(function(e,i,a){
return (a.indexOf(e.toString())==i && visibleValueArr.indexOf(e.toString()) == -1);
})
return flatUniqArr;
}
请让我知道我还需要什么信息。我会在继续研究的同时更新这个问题。
评论澄清:
用户在HTML表单上输入输入,变量作为
visibleValueArr
.
使用时
Logger.log(visibleValueArr)
.
[apple, banana]
使用时
Logger.log(colValueArr)
.
[[Apple],[apple][apple][apple and banana],[apple],[banana, and apple],
[apple, and banana],[orange],[orange, and banana],[kiwi],[kiwi, and orange],
[strawberry]]
所以当我使用:
SpreadsheetApp.newFilterCriteria().setHiddenValues(newArray).build();
newArray
应该是隐藏的值。在这种情况下,应该是:
基本上任何不包含
可视值
是。
相反,它返回所有值,并将其全部隐藏。
当我使用
[Apple, Banana]
“Apple”和“Banana”的值不在newArray中,但“Apple和Banana”和“Apple和Banana”不是
此外,我还想了解
e,i,a
在里面
function(e,i,a)
代表。我想申请
.toLowerCase()
在不同的地方,看看这是否解决了我的部分问题,但我不知道在哪里做。