怎么判断一个字符数组包含于另一个字符数组

Posted

tags:

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

byte[] a;
byte[]b;
怎么判断a中所有的元素都在b里面(就是a包含于b),谢谢

不知道你要比较的是元素实体,还是元素值(应该不是元素值)。
因为数组在内存中是连续存放的,所以,只要比较地址的范围就可以了
也就是看a的地址范围是否在b的地址范围内。
具体是a的起始地址a,尾地址pA=a+a元素个数
b的起始地址b,尾地址pB=b+b元素个数

我不知道起始地址大还是尾地址大,姑且认为起始地址小
则做比较:if((b<=a)||(a<=pA)||pA<=pB)cout<<"数组a包含于数组b"
参考技术A 挨个循环比较呗。。

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中怎么判断一个字符串是一个字符串数组中的元素

java中怎么判断一个字符串数组中包含某个字符或字符串

如何判断一个数组中是不是包含一个字符或字符串

VC++中,声明包含字符串的数组,怎么换行?

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