我正在编写一些代码,它应该根据数组的值自动过滤Tableau工作簿。
通过以下方式调用该函数:
showOnly2('Disponent',filterString);
' Disponent'是硬编码的,filterString是这种格式的数组:
['201','202','203','204','205','206','207','208','209']
在以下代码块中:
function showOnly2(filterName, values) {
document.getElementById("header").innerHTML = values;
sheet = viz.getWorkbook().getActiveSheet();
if(sheet.getSheetType() === 'worksheet') {
sheet.applyFilterAsync(filterName, values, 'REPLACE');
} else {
worksheetArray = sheet.getWorksheets();
for(var i = 0; i < worksheetArray.length; i++) {
worksheetArray[i].applyFilterAsync(filterName, values, 'REPLACE');
}
}
}
使用变量&#34;值&#34;调用时,worksheetArray[i].applyFilterAsync(filterName, values, 'REPLACE');
部分不起作用。
但是,如果我将数组的值硬编码到公式中:
worksheetArray[i].applyFilterAsync(filterName, ['201','202','203','204','205','206','207','208','209'] , 'REPLACE');
它就像一个魅力...不幸的是我不能硬编码,因为数组中的数字(我想设置的过滤器值)会随着时间的推移而变化。
有人有想法,为什么变量版本不起作用?
(我还通过实施document.getElementById("header").innerHTML = values;
检查了范围问题
在函数内,只需要仔细检查数组值是否正确读取。
非常感谢任何指针。
答案 0 :(得分:0)
答案很简单。
API预测数组对象不是字符串(尽管显示为字符串时看起来都相同)。
因此,以下代码完美无缺:
var filterArray = [];
for(var i = 201; i < 300; i++) {
filterArray.push(i);
}