关于为什么这个if else语句不起作用:为什么这个if else语句不起作用 – 水壶javascript

why this if else statement not working - kettle javascript

本问题已经有最佳答案,请猛点这里访问。

我在我的釜勺ETL工作流中使用这个Java脚本。但总是只有if语句有效,否则如果不有效,这有什么问题?

1
2
3
4
5
6
7
8
9
10
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 = '';

子类型的ID如下所示。

enter image description here


因为在javascript中,用于数组的in操作符不检查数组中的值,所以它检查索引。

见:

1
2
3
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

要更清楚地看到这一点,如果您这样做:

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

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

您需要在数组上使用indexOf

尝试:

1
2
3
4
5
6
7
if(category1.indexOf(sub_type_id) !== -1) {
  // do something
} else if (category2.indexOf(sub_type_id) !== -1) {
  // do something
} else {
  // do something
}