js 判断数组中有无包含关系

liangtiana 2011-01-27 09:59:01
JS中怎么判断数组中的字符串有无包含关系?
比如M001,M001002,M002.这里的第一个跟第二个是包含的
...全文
379 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
root_lee 2011-01-28
  • 打赏
  • 举报
回复
尽量减少循环次数就行了
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]);
flyerwing 2011-01-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cj205 的回复:]
var arr = ['M001','M001002','M002'];
alert(/([a-z\dA-Z]+\b).*?\b\1\B/.test(arr.join()));
[/Quote]
要不循环,不过循环好象效率高吧.
madpc 2011-01-28
  • 打赏
  • 举报
回复
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
hch126163 2011-01-28
  • 打赏
  • 举报
回复
正则 性能 更低

还是循环好
打字员 2011-01-27
  • 打赏
  • 举报
回复
你想要什么结果?

只要知道有无包含就行了,还是要知道那个元素包含了哪一些元素?

Mr-Jee 2011-01-27
  • 打赏
  • 举报
回复
var arr = ['M001','M001002','M002'];
alert(/([a-z\dA-Z]+\b).*?\b\1\B/.test(arr.join()));
Mr-Jee 2011-01-27
  • 打赏
  • 举报
回复
那你想怎么判断。
liangtiana 2011-01-27
  • 打赏
  • 举报
回复
别一个个的每个循环,这样效率太低

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧