使用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