BigArray:filter()

説明

指定した関数によって実行されるテストに配列(BigArray)の要素で合格した要素を新たな配列(BigArray)として返します。filter()のパラメーターは調べる対象となるBigArrayオブジェクト、結果を格納するBigArrayオブジェクト、テスト関数の順番で指定します。

[以下のJavaScriptプログラムをダウンロード]

// BigArray:Filter(BigArraySrc,BigArrayDst,func)
// BigArray(adrs)
function BigAry(a){
this.adrs=a; // EEPROM Address
this.length=0; // Length
this.set=function(idx,n){ // Set Data
var adrs=this.adrs+idx*4; // EEPROM Address+Index
i2cw(0x50|(((adrs>>16)&1)<<2), (adrs&0xff00)>>8,adrs&0xff, (n&0xFF000000)>>24,(n&0xFF0000)>>16,(n&0xFF00)>>8,n&0xFF);
if ((idx+1)>this.length){ this.length=idx+1; }
};
this.get=function(idx){ // Get Data
var adrs=this.adrs+idx*4; // EEPROM Address+Index
var t1,t2,t3,t4,d=0x50|(((adrs>>16)&1)<<2);
i2cw(d,(adrs&0xff00)>>8,adrs&255);
i2cr(d,t1,t2,t3,t4);
return (t1<<24)|(t2<<16)|(t3<<8)|t4;
};
}
// BigArray Filter
function filter(ary,aryDst,func){
var s=0;
while(s<ary.length){
var d=ary.get(s);
sleep(10); // Wait
if(func(d)){
aryDst.set(aryDst.length,d);
}
s=s+1;
}
}
// Sample Code
function over10(n){
if(n>=10){ return 1; }
return 0;
}
var myAry=new BigAry(0);
var dstAry=new BigAry(2048);
myAry.set(0, 1024);sleep(9);
myAry.set(1, 2);sleep(9);
myAry.set(2, 10);sleep(9);
myAry.set(3, 9);sleep(9);
myAry.set(4, 99);sleep(9);
filter(myAry,dstAry,over10);
log("result\n");
var n=0;
while(n<dstAry.length){
log(n,":",dstAry.get(n),"\n");
n=n+1;
sleep(10);
}

目次に戻る