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

这样就可以了,刚才理解反了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-17
if(links.some(function(e){return e == this}, arr[i]))
另外一个问题没看明白
大概是
arr.filter(function(e,i){return i!=this},i)