Heim >Web-Frontend >js-Tutorial >JavaScript获取多个数组的交集简单实例_javascript技巧

JavaScript获取多个数组的交集简单实例_javascript技巧

WBOY
WBOYOriginal
2016-05-16 17:16:191333Durchsuche

在项目中需要取得多个数组的交集,故本例只是适用于特定场景。比如A数组 var a = {1000,10001,10002,10003}; B数组 var b = {10002, 10003}; C数组var c = {10003}; 需要取得这三个数组的交集数组。
      具体思路为:先初始一个最小数组为A数组,元素个数最小的也是数组A的长度.然后再迭代各个数组,取得这几个数组长度最短的为最小长度,同时得到长度最短数组。然后,迭代最小数组与各个数组,开始比较元素相等,使用计数器来判断是否该元素在各个数组中都存在即为交集元素.
      思路比较简单,但是可以实现多数组取得交集,代码如下:

复制代码 代码如下:



 
  New Document
 
 
 
 
  <script> <BR> function getValues(obj){ <BR> var values = ""; <BR> var l = obj.options.length; <BR> for (var i=0; i<l; i++) { <BR> if (i != (l-1)) { <BR> values += obj.options(i).value + "_"; <BR> } <BR> else { <BR> values += obj.options(i).value; <BR> } <BR> } <BR> return values; <BR> } <br><br> function _test() { <BR> var ids = getValues(document.all.aa); <BR> var aa = _getIntersection(ids); <BR> } <br><br> function _getIntersection(src) { <BR> var tAry = src.split("_"); <BR> //最小数组 <BR> var minAry = null; <BR> var min = tAry[0].split(",").length; //初始化第一个为长度最小的数组 <BR> minAry = tAry[0].split(","); <BR> for (var i = 1, len = tAry.length; i<len; i++) { <BR> var temp = tAry[i].split(","); <BR> if (temp.length < min) { <BR> min = temp.length; <BR> minAry = temp; <BR> } <BR> } <BR> alert("最小数组:"+minAry); <br><br> var ret = ''; <BR> for (var i = 0, len = minAry.length; i<len; i++) { <BR> var srcNum = parseInt(minAry[i]); <BR> var counter = 0; <BR> for (var j = 0, ll = tAry.length; j<ll; j++) { <BR> var tt = tAry[j].split(","); <BR> for (var k = 0, l = tt.length; k<l; k++) { <BR> var tarNum = parseInt(tt[k]); <BR> if (srcNum == tarNum) { <BR> counter ++; <BR> } <BR> } <BR> } <BR> if (counter == tAry.length) { <BR> ret += srcNum + ","; <BR> } <BR> } <BR> ret = strSlice(ret, ','); <BR> alert("交集是:" + ret); <BR> } <br><br> //去掉结尾分隔符 <BR> function strSlice(str, split){ <BR> if ((str!=null && str!="") && (split!=' ')) <BR> return ((str.charAt(str.length-1) == split) ? str.substring(0, str.length-1) : str); <BR> else <BR> return str; <BR> } <BR> </script>

 

 
   

   

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn