【问题标题】:why this if else statement not working - kettle javascript [duplicate]为什么这个 if else 语句不起作用-kettle javascript [重复]
【发布时间】:2017-09-05 10:17:11
【问题描述】:

我在我的水壶勺 ETL 工作流程中使用这个 java 脚本。但是总是只有 if 语句有效,else if 无效,这有什么问题?

var type1 = '';
var type2 = '';
var category1 = [1, 2, 3, 4, 5, 6, 7, 8, 50, 53];
var category2 = [10, 11, 12, 13, 14, 15, 56];

if (sub_type_id in category1) {
type1 = 'type-res';}
else if (sub_type_id in category2) {
type1 = 'type-ren';}
else type1 = '';

sub_type_id 看起来像这样..

【问题讨论】:

  • sub_type_id 是什么?
  • 这将具有像 1,2,3,4..这样的值。

标签: javascript if-statement kettle pentaho-spoon


【解决方案1】:

因为在 javascript 中,用于数组的 in 运算符不检查数组中的值,而是检查索引。

见:

var category1 = [1, 2, 3, 4, 5, 6, 7, 8, 50, 53];
var sub_type_id = 50;
console.log(sub_type_id in category); // you get false

为了更清楚地看到这一点,如果你这样做:

for (i in category1) {
  console.log(i);
}

打印的是0~9,是索引,而不是实际值。

您需要在数组上使用indexOf

试试:

if(category1.indexOf(sub_type_id) !== -1) {
  // do something
} else if (category2.indexOf(sub_type_id) !== -1) {
  // do something
} else {
  // do something
}

【讨论】:

  • 让我试试这个。谢谢。
  • 它不工作。 :( 现在即使语句不起作用。空单元格。
  • 你能给我一些你使用的sub_type_id的例子吗?
  • 用 sub_type_id 编辑了问题
  • 嗨,我创建了这个小提琴 sn-p:jsfiddle.net/k5ahwzue。它看起来打印正确。你能放一些打印来检查每个分支是否被正确击中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 2014-02-23
相关资源
最近更新 更多