对数组中含特殊符号记录过滤并分组

来源:互联网 发布:射手 mac 字幕 编辑:程序博客网 时间:2024/06/11 04:39

有一个应用,在数组里面包含一些特殊的记录,这些特殊记录作为断开标志,断开的记录与相邻的记录又组成一个整体,调试代码如下,可以调整 status=-1 来观察一下的结果

<html>

    <script>
        var a={key:1, status :1};//0
        var a2={key:2,status:1};//1
        var a3={key:3,status:1};//2
        var a4={key:4,status:1};//3
        var a5={key:5,status:1};//4
        var a6={key:6,status:1};//5
        var a7={key:7,status:1};//6
        var a8={key:8,status:1};//7
        var ay =[];
        ay.push(a);
        ay.push(a2);
        ay.push(a3);
        ay.push(a4);
        ay.push(a5);
        ay.push(a6);
        ay.push(a7);
        ay.push(a8);
        var breakIndex = [];
        for(var i=0;i<ay.length;i++    ){
            if ( ay[i].status==-1){
                breakIndex.push(i);
            }
        }
 
if ( breakIndex.length >0) {
        for(var i=0;i<breakIndex.length;i++){
 
 if (  (i-1) >= 0 ){
             if ( (breakIndex[i - 1]+1) == breakIndex[i] ) {
                     continue;
                 }
                console.info("["+ (  breakIndex[i - 1] +1 )+" : "+ (  breakIndex[i] -1 )+"]");
            }
            else{
              console.info( "--2--" );
                if ( breakIndex[0] != 0 )
                    console.info("[0 : "+ (  breakIndex[0]-1 ) +"]");
            }
 
        }
 
 
        if( breakIndex[breakIndex.length-1] < (ay.length-1 )) {
 
            console.info("["+ ( breakIndex[breakIndex.length-1]+1 ) +" : "+ (ay.length-1)+ "]");
        }
} else {
            console.info("[0 : "+ ( ay.length -1 )+"]");
}
 
    </script>
    <body>
        
    </body>

</html>

一个真实的应用场景:在Extjs4 对store里面的数据进行分割


function createStore(container,datastore,beginIndex  ,endIndex ) {
var rs =  datastore.getRange( beginIndex ,endIndex ) ;
if ( rs ) {
var s = Ext.create('Ext.data.ArrayStore', {  model : 'ShiftOutput'});
s.add(rs);
container.push( s );
}
}
       var storeArray = [] ;
  var breakIndex = [];
  for(var i=0; i < store.data.items.length; i++ ){
  if (  store.data.items[i].data['status'] == -1 ){
  brakIndex.push(i);
  }
  }
  if (  breakIndex.length > 0 ) { 
       for(var i=0;i<breakIndex.length;i++){
           if (  (i-1) >= 0 ){
            if ( (breakIndex[i - 1]+1) == breakIndex[i] ) {
                   continue;
            }
createStore( storeArray , store,  breakIndex[i-1]+1 ,breakIndex[i]-1 );
           } else {
               if ( breakIndex[0] != 0 ) {
    createStore( storeArray , store,  0 , breakIndex[0]-1 );
               }
           }
       }
       if( breakIndex[ breakIndex.length - 1 ] < ( store.data.items.length - 1 ) ) {
createStore( storeArray , store,  breakIndex[breakIndex.length-1]+1 , store.data.items.length-1);
       }
  } else {
  createStore( storeArray , store, 0, store.data.items.length-1);
  }

0 0
原创粉丝点击