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高手们帮个忙啊。。。重点是我要怎么得到可以匹配这个字符串之外 剩下的那个字符串。。。。不想用正则表达式。。。
展开
 我来答
lkiarest
2013-12-18 · TA获得超过543个赞
知道小有建树答主
回答量:761
采纳率:100%
帮助的人:411万
展开全部
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;
                    };

我记得昨天给你解决了啊。。。你把我昨天发的代码复制就可以了,你是重新打了一遍吧?

zhaoapk
2013-12-18 · TA获得超过3771个赞
知道大有可为答主
回答量:1343
采纳率:40%
帮助的人:1614万
展开全部
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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友817c9e4
2013-12-18 · 超过20用户采纳过TA的回答
知道答主
回答量:45
采纳率:100%
帮助的人:24.3万
展开全部
你上面的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]))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式