比较java脚本中的数组

Comparison an array in java script

本文关键字:数组 脚本 java 比较      更新时间:2023-09-26

关于如何比较数组中的字符串,我有问题。。在我的名单上有杰克,约翰,nami@domain,nami

function **alreadyInList**(list, toBeAdded) {
    // return true or false
    var delims = "(,)";
    var tokens = list.split(delims);
    for ( var i = 0; i < tokens.length; i++){
        if (tokens[i] === toBeAdded  ){ 
            return true;    
        }
        else 
            return false;
        }
}
function addListTo(selectbox, textbox) {
    var values = new Array();
    var c = 0;
    for ( i = 0; i < selectbox.options.length; i++) {
        if (selectbox.options[i].selected) {
            if (!**alreadyInList**(textbox.value,selectbox.options[i].value)) {
                values[c++] = selectbox.options[i].value;
            }
        }
    }
    if (values.length == 0) return;
    var v = values[0];
    for (i = 1; i < values.length; i++) {
            v += ',' + values[i];
    }
    if (textbox.value.length>0) {
        if (textbox.value=='Any') {
            textbox.value = v;
        } else {
            textbox.value += ',';
            textbox.value += v;
    }
    } else {
        textbox.value += v;
    }
}

当我把我的条件放进去,我想把字符串添加到文本框中时,它只对第一个字符串有效,比如说我把nami作为我的字符串,然后当我想再次放nami时,它不能,所以它有效。。但在","之后name@domain.我可以把娜米放回去。。意思是我不想在我的文本框中重复字符串。有人能帮我吗?对不起,我还是这个编程的新手。。对不起我的英语

下面是函数的修订版本,用于检查名称是否在数组中的任何字符串中出现两次

function alreadyInList(list, toBeAdded) {
    // return true or false
    var delims = ",",
        tokens = list.split(delims),
        found = false;
    var end = tokens.forEach(function (value) {
        if (value.indexOf(toBeAdded) !== -1 && found == false) {
            found = true;
            alert('It''s been found!');
            // Do something
            return true;
        }
        return false;
    });
    if (found != true) {
        alert('Not in the list');
        return false;
    } else {
        return false;
    }
}
alreadyInList('marry,joe,gerry', 'marry');

JSFiddle演示

此外,如果它只是列表中的一个出现,那么你需要一些没有函数的简单东西。

var str = "marry,joe,gerry",
   key =  "marry";
if ( str.indexOf(key) !== -1 )  {
    // Its found! Do something
}

正如Sasquatch在上面指出的,问题在于用于拆分的分隔符。您希望用一个逗号","分隔,而不是用三个字符"(,)"分隔。

按照代码的编写方式,由于分割分隔符错误,令牌只能有一个值。它将整个字符串变量列表与toBeAdded字符串匹配,并返回false。