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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中怎么判断一个字符串是一个字符串数组中的元素相关的知识,希望对你有一定的参考价值。

下面是我自己定义的一个数组
var links = new Array();
links[0] = "notice";
links[1] = "purchase";
links[2] = "report";
var arr = new Array();
arr = linkValue.split(","); //linkValue是extjs中ComboBox中取得的值
for( i= 0; i<arr.length; i++)
if( 。。。。。)
alert("存在"+arr[i]); //进行相关操作
else
alert("不存在"+arr[i]); //进行相关操作


我的问题就是这个if条件里面怎么写才可以呢?还有就是比如arr进行分割之后有两个值分别是notice和purchase那么我怎么能得到剩下的那一个值呢?还请js高手们帮个忙啊。。。重点是我要怎么得到可以匹配这个字符串之外 剩下的那个字符串。。。。

                  var inArray = function(arr, item) 
                    for (var i = 0; i < arr.length; i++) 
                        if (arr[i] == item) 
                            return true;
                        
                    
                    return false;
                  ;
                  var links = new Array();
                  links[0] = "notice";
                  links[1] = "purchase";
                  links[2] = "report";
                  var arr = new Array();
                  linkValue = "notice,def,ghi,jkl";
                  arr = linkValue.split(",");     //linkValue是extjs中ComboBox中取得的值
                  for( i= 0; i< arr.length; i++) 
                     if(inArray(links, arr[i]))
                         alert("存在" + arr[i]);        //进行相关操作
                      else 
                         alert("不存在"+ arr[i]);         //进行相关操作
                     
                  

 另外你另一个需求可以写一个方法实现:

                  var getItems = function(arr1, arr2) 
                      var indexes = [];
                      for (var i = 0; i < arr2.length; i++) 
                          if(inArray(links, arr[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;
                  

你把两个数组传进去,返回的就是没有匹配到的元素数组

追问

你下面定义的这个函数,参数arr1和arr2分别指什么啊?

追答var result = getItems(links, linkValue);

这样使用

追问

你这个getItems()好象有问题啊,就是假如linkValue = "purchase,report",正确情况下,result应该是public,但是却返回report,假如linkValue="public,report",却还是返回report,就算linkValue="report",result里面仍然有report,只要选择了就有,这是怎么回事啊?

追答                  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 if(links.some(function(e)return e == this, arr[i]))
另外一个问题没看明白
大概是
arr.filter(function(e,i)return i!=this,i)

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

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

怎样删除js数组中的undefined?

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

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

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

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