在javascript中对变量使用搜索

在javascript中对变量使用搜索,javascript,Javascript,大家好,我希望你们能帮我解决我遇到的问题: 我使用函数从组中获取组成员列表。 这将返回到一个变量。 从这个变量中,我需要查看当前用户(current.sys.id)是否在此列表中。 如果不做某事,那么什么也不做。 不幸的是,我的.search总是返回-1,即使记录在其中 我使用了gs.log命令来查看不同的结果,我看到regexp出现在var中,甚至它给了我一个-1。 有人能看出我做错了什么吗 这是我的密码 var list = group_members(); var chec

大家好,我希望你们能帮我解决我遇到的问题:

我使用函数从组中获取组成员列表。 这将返回到一个变量。 从这个变量中,我需要查看当前用户(
current.sys.id
)是否在此列表中。 如果不做某事,那么什么也不做。 不幸的是,我的
.search
总是返回-1,即使记录在其中

我使用了gs.log命令来查看不同的结果,我看到regexp出现在var中,甚至它给了我一个-1。 有人能看出我做错了什么吗

这是我的密码

    var list = group_members();
    var check = new RegExp(current.sys_id);
    var control = list.search(check);
    if (control = -1) {
        set_group();
        gs.log("conf is :" + conf);
        gs.log("check is :" + check);
        gs.log("control is: " + control + "de lijst ziet er zo uit: " + list);
    } else {
        gs.log("check is :" + check);
        gs.log("control is: " + control + "de lijst ziet er zo uit: " + list);
    }
}

function group_members() {
    gs.log("functie check groep is aangeroepen");
    var answer = ' ';
    var group = "794ac672d4a301006027eb6da8731188";
    var group_mem = new GlideRecord('sys_user_grmember');
    group_mem.addQuery('group', group);
    group_mem.query();

    while (group_mem.next()) {
        if (answer.length > 0) {
            answer += (',' + group_mem.user.sys_id);
        } else {
            answer = group_mem.user.sys_id;
        }
    }
    return answer.toString();
}

function set_group() {
    gs.log("functie set_groep is aangeroepen");
    var rec1 = new GlideRecord('sys_user_grmember');
    rec1.initialize();
    rec1.user = current.sys_id;
    rec1.group.setDisplayValue('TFPP Users');
    rec1.insert();
    gs.log("groep is nu gezet");
}

提前感谢。

您的问题表明您正在查找current.sys.id,但您的代码使用current.sys\u id。您的问题就是这个打字错误吗

另一方面,我会使用indexOf而不是search,因为您并没有真正使用您正在创建的正则表达式。只要做:

list.indexOf(current.sys.id);

如果它返回-1,那是因为它不在那里。

好吧,我睡了一夜,尝试了不同的方法:

我没有返回完整的用户列表,而是在函数中添加了check

function group_members(){
    var answer = ' ';
    var group = "794ac672d4a301006027eb6da8731188";
    var group_mem = new GlideRecord('sys_user_grmember');
    group_mem.addQuery('group',group);
    group_mem.query();

        while(group_mem.next()){
            var user = current.sys_id;
            if (user == group_mem.user.sys_id){
                return ("1")
            }
        }
    }
现在,如果列表中存在我的当前用户,它将返回1,否则它将是未定义的。 这将删除整个搜索部分。
感谢您的回复。

您缺少第1行(函数声明),这可能是您为什么使用正则表达式作为id的重复项?最好使用普通字符串
indexOf
。Is
group_mem.query()异步?谢谢joren,但我有第一行,但网站没有显示第一行=var list=group_members();因此,list将是从函数生成的列表。很抱歉,我在第一次解释时输入了一个错误,它需要是当前的。sys\u id不是当前的。sys.id,但代码只包含当前的。sys\u id,所以这不是解决方案。我改为索引,但没有运气仍然显示-1 var check=newregexp(current.sys\u id);var控制=list.indexOf(检查);current.sys\u id的值是多少?你确定它真的有值吗?因为如果它是空的或未定义的,这可能就是为什么找不到它的原因。另外,如果您没有使用regex(您没有),那么不要创建RegExp对象。只需使用list.indexOf(current.sys_id)current.sys_id是由系统(servicenow)生成的值。它是创建新用户时运行的脚本。因此,current.sys_id是动态的。该值不是空的,因为我使用日志查看它是否为空,并且它每次都生成一个值。