如我有Json
var spec =[
{"ProductGuid":"42f73f7a5f4b4e51b8b0853af379ea25","SpecCode":"cabd","SpecValueCode":"dc41"},{"ProductGuid":"d7a5b1cc4d2b4191ae8c9ce98c296b9a","SpecCode":"cabd","SpecValueCode":"a297"},{"ProductGuid":"bd8a390451cd44cbbfea5fc8fbdf521b","SpecCode":"cabd","SpecValueCode":"7d2a"},{"ProductGuid":"42f73f7a5f4b4e51b8b0853af379ea25","SpecCode":"3c3f","SpecValueCode":"f2b2"},{"ProductGuid":"bd8a390451cd44cbbfea5fc8fbdf521b","SpecCode":"3c3f","SpecValueCode":"f2b2"},{"ProductGuid":"d7a5b1cc4d2b4191ae8c9ce98c296b9a","SpecCode":"3c3f","SpecValueCode":"f2b2"},{"ProductGuid":"e82edb204ea147378b4a8e0ed5201677","SpecCode":"3c3f","SpecValueCode":"f2b2"},{"ProductGuid":"e82edb204ea147378b4a8e0ed5201677","SpecCode":"cabd","SpecValueCode":"9972"}
]; 如我要找出:
SpecCode=cabd,SpecValueCode=dc41

SpecCode=3c3f,SpecValueCode=f2b2
的记录
结果为42f73f7a5f4b4e51b8b0853af379ea25
我现在的方法就是先循环第一个条件,再循环第二个条件
有没有更快的方法 谢谢

解决方案 »

  1.   

    foreach(a in spec)
    {
    if(a.SpecCode=="cabd" && SpecValueCode="dc41" && a.ProductGuid="42f73f7a5f4b4e51b8b0853af379ea25"  )
    {
    //do matters
    }
    }
      

  2.   

    foreach(a in spec)
    {
    if(a.SpecCode=="cabd" && SpecValueCode="dc41" && a.ProductGuid="42f73f7a5f4b4e51b8b0853af379ea25" )
    {
    //do matters
    }
    }
    --------------
    可问题我怎么知道:42f73f7a5f4b4e51b8b0853af379ea25
    这个,循环N次吗
      

  3.   

    1楼的做法如果是在最后一个的话,需要循环n*n*n次,楼主可以进行分半查找,就是从0-n/2 在从n/2 +1到n这样会快些
      

  4.   

    免不了要循环,如果查询要要求很快的话,就用空间换时间了。另外用对象做索引
    index1 = {"SpecCode=cabd,SpecValueCode=dc41":"42f73f7a5f4b4e51b8b0853af379ea25"},....]index2 = {"42f73f7a5f4b4e51b8b0853af379ea25":"SpecCode=cabd,SpecValueCode=dc41|SpecCode=3c3f,SpecValueCode=f2b2
    "}
      

  5.   

    <script type="text/javascript">
    var spec =[
    {"ProductGuid":"42f73f7a5f4b4e51b8b0853af379ea25","SpecCode":"cabd","SpecValueCode":"dc41"},
    {"ProductGuid":"d7a5b1cc4d2b4191ae8c9ce98c296b9a","SpecCode":"cabd","SpecValueCode":"a297"},
    {"ProductGuid":"bd8a390451cd44cbbfea5fc8fbdf521b","SpecCode":"cabd","SpecValueCode":"7d2a"},
    {"ProductGuid":"42f73f7a5f4b4e51b8b0853af379ea25","SpecCode":"3c3f","SpecValueCode":"f2b2"},
    {"ProductGuid":"bd8a390451cd44cbbfea5fc8fbdf521b","SpecCode":"3c3f","SpecValueCode":"f2b2"},
    {"ProductGuid":"d7a5b1cc4d2b4191ae8c9ce98c296b9a","SpecCode":"3c3f","SpecValueCode":"f2b2"},
    {"ProductGuid":"e82edb204ea147378b4a8e0ed5201677","SpecCode":"3c3f","SpecValueCode":"f2b2"},
    {"ProductGuid":"e82edb204ea147378b4a8e0ed5201677","SpecCode":"cabd","SpecValueCode":"9972"}
    ]; 
    var rtn;
    var cnt=0;
    for(var i=0;i<spec.length;i++){
       if((spec[i].SpecCode=="cabd" && spec[i].SpecValueCode=="dc41")
       || (spec[i].SpecCode=="3c3f" && spec[i].SpecValueCode=="f2b2")){cnt++;
        if(cnt==2)rtn=spec[i].ProductGuid;
       }
    }
    alert(rtn);
    </script>
      

  6.   

    try:
    <script type="text/javascript">
    var spec =[
    {"ProductGuid":"42f73f7a5f4b4e51b8b0853af379ea25","SpecCode":"cabd","SpecValueCode":"dc41"},
    {"ProductGuid":"d7a5b1cc4d2b4191ae8c9ce98c296b9a","SpecCode":"cabd","SpecValueCode":"a297"},
    {"ProductGuid":"bd8a390451cd44cbbfea5fc8fbdf521b","SpecCode":"cabd","SpecValueCode":"7d2a"},
    {"ProductGuid":"42f73f7a5f4b4e51b8b0853af379ea25","SpecCode":"3c3f","SpecValueCode":"f2b2"},
    {"ProductGuid":"bd8a390451cd44cbbfea5fc8fbdf521b","SpecCode":"3c3f","SpecValueCode":"f2b2"},
    {"ProductGuid":"d7a5b1cc4d2b4191ae8c9ce98c296b9a","SpecCode":"3c3f","SpecValueCode":"f2b2"},
    {"ProductGuid":"e82edb204ea147378b4a8e0ed5201677","SpecCode":"3c3f","SpecValueCode":"f2b2"},
    {"ProductGuid":"e82edb204ea147378b4a8e0ed5201677","SpecCode":"cabd","SpecValueCode":"9972"}
    ]; 
    var rtn=[];
    var cnt=0;
    for(var i=0;i<spec.length;i++){
        if(!rtn[spec[i].ProductGuid])rtn[spec[i].ProductGuid]=[];
        rtn[spec[i].ProductGuid].push(spec[i].SpecCode+":"+spec[i].SpecValueCode);
    }for(var v in rtn)
    if(rtn[v].sort().join()==["cabd:dc41","3c3f:f2b2"].sort().join())alert(v);</script>
      

  7.   

    或者:
    <script type="text/javascript">
    var spec =[
    {"ProductGuid":"42f73f7a5f4b4e51b8b0853af379ea25","SpecCode":"cabd","SpecValueCode":"dc41"},
    {"ProductGuid":"d7a5b1cc4d2b4191ae8c9ce98c296b9a","SpecCode":"cabd","SpecValueCode":"a297"},
    {"ProductGuid":"bd8a390451cd44cbbfea5fc8fbdf521b","SpecCode":"cabd","SpecValueCode":"7d2a"},
    {"ProductGuid":"42f73f7a5f4b4e51b8b0853af379ea25","SpecCode":"3c3f","SpecValueCode":"f2b2"},
    {"ProductGuid":"bd8a390451cd44cbbfea5fc8fbdf521b","SpecCode":"3c3f","SpecValueCode":"f2b2"},
    {"ProductGuid":"d7a5b1cc4d2b4191ae8c9ce98c296b9a","SpecCode":"3c3f","SpecValueCode":"f2b2"},
    {"ProductGuid":"e82edb204ea147378b4a8e0ed5201677","SpecCode":"3c3f","SpecValueCode":"f2b2"},
    {"ProductGuid":"e82edb204ea147378b4a8e0ed5201677","SpecCode":"cabd","SpecValueCode":"9972"}
    ]; 
    var rtn=[];
    var cnt=0;
    for(var i=0;i<spec.length;i++){
       if((spec[i].SpecCode=="cabd" && spec[i].SpecValueCode=="dc41")
       || (spec[i].SpecCode=="3c3f" && spec[i].SpecValueCode=="f2b2")){
          if(!rtn[spec[i].ProductGuid])rtn[spec[i].ProductGuid]=true;
          else {
            alert(spec[i].ProductGuid);
          }
       }
    }
    </script>