为什么这个 if else 语句不起作用 - kettle javascript
why this if else statement not working - kettle javascript
我在我的水壶勺 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 看起来像这样..
因为在 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
}
我在我的水壶勺 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 看起来像这样..
因为在 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
}