我有关于如何比较数组中的字符串的问题.. 在我的名单中有jack,john,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它不能这样它的工作..但是& #34;&#34;我把名字@ domain .i可以放回nami..means我不想在我的textbox里面重复的字符串。有人帮助我。我仍然是这个编程中的新人。我的英语是
答案 0 :(得分:0)
正如Sasquatch在上面指出的那样,问题是你用于拆分的分隔符。你想用一个逗号分隔',' - 而不是用三个字符'(,)'。
编写代码的方式,令牌只有一个值,因为拆分分隔符是错误的。它将整个字符串变量列表与toBeAdded字符串匹配并返回false。
答案 1 :(得分:0)
以下是函数的修订版本,用于检查名称在数组
中的任何字符串中是否出现两次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');
此外,如果列表中只有一个出现,则需要一些没有功能的简单的东西。
var str = "marry,joe,gerry",
key = "marry";
if ( str.indexOf(key) !== -1 ) {
// Its found! Do something
}