JS中怎么判断数组中的字符串有无包含关系?
   比如M001,M001002,M002.这里的第一个跟第二个是包含的

解决方案 »

  1.   

    var arr = ['M001','M001002','M002'];
    alert(/([a-z\dA-Z]+\b).*?\b\1\B/.test(arr.join()));
      

  2.   

    cj 的不错
    我试了下
    var arr = ['M001','M001002','M002','M00277'];
    var r=/([a-z\dA-Z]+\b).*?\b(\1.*?)\b/g;
    while(m=r.exec(arr.join())){
    print("\n",m[1]," ",m[2])
    }
    输出:
    M001 M001002
    M002 M00277
      

  3.   

    尽量减少循环次数就行了
    var arr = ['M001','M002001', 'M001002','M002'];
    arr.sort();
    var retArr = [];
    (function(){
        var i,len;
    for(i = 0, len = arr.length; i<len; i++){
    if(arr[i].indexOf(arr[0]) < 0) break;
    }
    if(len <= 0) return;
    retArr.push(arr.splice(0, i));
    arguments.callee();
    })();
    alert("0:"+retArr[0]+"\n1:"+retArr[1]);