js中怎么判断一个字符串是一个字符串数组中的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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高手们帮个忙啊。。。重点是我要怎么得到可以匹配这个字符串之外 剩下的那个字符串。。。。不想用正则表达式。。。

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;
                    ;

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

参考技术A 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);

参考技术B 你上面的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]))

以上是关于js中怎么判断一个字符串是一个字符串数组中的元素的主要内容,如果未能解决你的问题,请参考以下文章

JS中如何判断一个字符串是一个字符串数组中的一个元素!!?

怎样删除js数组中的undefined?

js我想判断一个字符串中的所有元素是不是为同一个应该怎么写,刚学

js怎么判断某个数组里面是不是包含这个元素

js 字符串获取最后一个元素

PHP如何检查一个数组内是不是存在指定元素