使用Pentaho/JavaScript生成带条件的标志
我试图用更好的方法来优化我的代码。 我有一个可变的“小时”。我需要制作这样的旗帜:使用Pentaho/JavaScript生成带条件的标志,javascript,pentaho,Javascript,Pentaho,我试图用更好的方法来优化我的代码。 我有一个可变的“小时”。我需要制作这样的旗帜: if (hour == 0) {flag12AM = 'yes'} else {flag12AM == 'no'} if (hour == 0 || hour == 1) {flag1AM = 'yes'} else {flag1AM == 'no'} if (hour == 0 || hour == 1 || hour == 2) {flag2AM = 'yes'} else {flag2AM ==
if (hour == 0) {flag12AM = 'yes'}
else {flag12AM == 'no'}
if (hour == 0 || hour == 1) {flag1AM = 'yes'}
else {flag1AM == 'no'}
if (hour == 0 || hour == 1 || hour == 2) {flag2AM = 'yes'}
else {flag2AM == 'no'}
[...]
if (hour == 0 || hour == 1 [...] || hour == 23) {flag23PM = 'yes'}
else {flag23PM == 'no'}
我可以用一个环来做吗?我正在使用Pentaho,所以,如果有任何步骤可以完成这项工作,请告诉我
谢谢 这可能对您有用:
var h = 20;
[...Array(24).fill().map((v, i) => i + 1)]
.forEach((v) =>
console.log([...Array(v).fill().map((h, i) => i)]
.reduce((result, currentValue) => result || (h == currentValue), false), v))
您可以使用数据网格步骤生成所有标志值,然后查找小时并检索所有标志 IIUC,使用Modified Java Script Value步骤,您可以使用for循环计算所有标志,然后将这些值分配并导出到特定的标志名称
var flags = []
for (i=0; i<24; i++) {
flags[i] = hour <= i ? "yes" : "no"
}
var flag12AM = flags[0]
var flag1AM = flags[1]
var flag2AM = flags[2]
....
var flag23PM = flags[23]
var标志=[]
对于(i=0;iThat),该解决方案在他的上下文中不起作用,因为Pentaho.JS代码在Rhino中运行,不支持语法,也不支持使用的技术。首先不要使用24个不同的标志变量。
New field: flag12AM
Formula: IF([hour]<=0;"yes";"no")
Value type: String