js中怎么判断一个字符串是一个字符串数组中的元素
下面是部分代码varinArray=function(arr,item){for(vari=0;i<arr.length;i++){if(arr[i]==item){re...
下面是部分代码
var inArray = function(arr, item) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == item) {
return true;
}
}
return false;
};
var getItems = function(arr1, arr2) {
var indexes = [];
for (var i = 0; i < arr1.length; i++) {
if(inArray(arr1, arr2[i])) {
indexes[i] = true;
} else {
indexes[i] = false;
}
}
var result = [];
for (var i = 0; i < indexes.length; i++) {
if (!indexes[i]) {
result.push(arr1[i]);
}
}
return result;
};
var links = new Array();
links[0] = "notice";
links[1] = "purchase";
links[2] = "report";
arr = linkValue.split(","); //linkValue是extjs中ComboBox中取得的值,并且只能为notice,purchase,report之中的一个、两个(全部存在的情况暂时先不考虑)
var com = getItems(links,arr);
alert("不存在com : "+com);
我的问题就是比如arr进行分割之后有两个值分别是notice和report,那么我怎么能得到剩下的那一个值呢?还请js高手们帮个忙啊。。。重点是我要怎么得到可以匹配这个字符串之外 剩下的那个字符串。。。。不想用正则表达式。。。 展开
var inArray = function(arr, item) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == item) {
return true;
}
}
return false;
};
var getItems = function(arr1, arr2) {
var indexes = [];
for (var i = 0; i < arr1.length; i++) {
if(inArray(arr1, arr2[i])) {
indexes[i] = true;
} else {
indexes[i] = false;
}
}
var result = [];
for (var i = 0; i < indexes.length; i++) {
if (!indexes[i]) {
result.push(arr1[i]);
}
}
return result;
};
var links = new Array();
links[0] = "notice";
links[1] = "purchase";
links[2] = "report";
arr = linkValue.split(","); //linkValue是extjs中ComboBox中取得的值,并且只能为notice,purchase,report之中的一个、两个(全部存在的情况暂时先不考虑)
var com = getItems(links,arr);
alert("不存在com : "+com);
我的问题就是比如arr进行分割之后有两个值分别是notice和report,那么我怎么能得到剩下的那一个值呢?还请js高手们帮个忙啊。。。重点是我要怎么得到可以匹配这个字符串之外 剩下的那个字符串。。。。不想用正则表达式。。。 展开
3个回答
展开全部
var getItems = function(arr1, arr2) {
var indexes = [];
for (var i = 0; i < arr1.length; i++) {
if(inArray(arr2, arr1[i])) { // 这个地方写反了
indexes[i] = true;
} else {
indexes[i] = false;
}
}
var result = [];
for (var i = 0; i < indexes.length; i++) {
if (!indexes[i]) {
result.push(arr1[i]);
}
}
return result;
};
我记得昨天给你解决了啊。。。你把我昨天发的代码复制就可以了,你是重新打了一遍吧?
展开全部
function inArray(arr, item) {
var index = -1;
if (arr.indexOf) {
index = arr.indexOf(item);
} else {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == item) {
index = i;
break;
}
}
}
return index;
}
function getItems(arr1, arr2) {
// 获取arr1的副本
var copy = arr1.slice(0);
for (var i = arr2.length - 1; i >= 0; i--) {
var index = inArray(copy, arr2[i]);
if (index != -1) {
copy.splice(index, 1);
}
}
return copy;
}
var links = new Array();
links[0] = "notice";
links[1] = "purchase";
links[2] = "report";
arr = linkValue.split(",");
var com = getItems(links, arr);
alert("不存在com : " + com);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你上面的2个方法不是已经找出来那个剩余的了吗。
追问
上面的方法不行,就比如arr={notice,report},正确的是返回purchase,但是却返回report,如果arr={report}却返回{purchase,report},如果arr={purchase,report}却还是返回report。。上面的方法根本不行。。。你有什么办法吗?
追答
你这问题我懂了。先去吃个饭~如果没人帮你解决 下午在来帮你看
如果arr={report} 那你想得到哪个怎么确定呢
zhaoapk的是对的 var copy = links.slice(0); 改成 var copy = arr1.slice(0);吧?
lkiarest的
for (var i = 0; i < arr1.length; i++) {
if(inArray(arr2, arr1[i])) { // 这个地方写反了
应该写成
for (var i = 0; i < arr2.length; i++) {
if(inArray(arr1, arr2[i]))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询