0

JavaScriptでオブジェクトを含む配列を作成しました。それは私が得たものです:

object[
   {position:1, value:23}, 
   {position:34, value:22 }, 
   {position:2, value:10},
   {position:35,value:9}.....
]

だから私は目的地のオブジェクトを削除する for ループを作成したい (例えば、目的地 =(object1.position - object2.position) *-1) は前のオブジェクトに対して 18 未満です。

例: object[2].position は object[0].position から 1 位置離れているため、object[2] はもう必要ありません。object[3] についても同じ ... 35 - 34 = 1 / 1<18 / object[3] は必要ありません。

それが私が書いたものです:

myfullarray = [
    {pos:1,value:23},
    {pos:34,value:22},
    {pos:2,value:10},
    (...)
]
myarray = [];
myarray[0] = {
    pos:myfullarray[0].pos,
    value:myfullarray[0].value
}

for(i=1;i<myarray.length;i++){
    for(d=i;d>0;d--){
      mydest = myfullarray[i].pos-myfullarray[d].pos;
      if(mydest<0){
        mydest *= -1
      }
      if(mydest<18){
      }else{

        myarray[myarray.length + 1] = {
          value:myfullarray[i].value,
          pos:myfullarray[i].pos
        };
      }
    }
 }

誰かがこの問題を手伝ってくれますか?

4

2 に答える 2

0

元のアルゴリズムに近づけたい場合は、これで問題ありません。

myfullarray = [
    {position:1, value:23}, 
    {position:34, value:22 }, 
    {position:2, value:10},
    {position:35,value:9}
]
myarray = [];
myarray[0] = {
    pos:myfullarray[0].position,
    value:myfullarray[0].value
}
myfullarray.splice(0,1);

var mindest = 18;

for(i=0;i<myarray.length;i++){
    var myobject = myarray[i];
    for(d=i;d<myfullarray.length;d++){
      mydest = myobject.position-myfullarray[d].position;
      if(mydest<0){
        mydest *= -1
      }
      if(mydest<mindest){
          myfullarray.splice(d, 1);
      }
    }

    if (i < myfullarray.length) {
        myarray.push(myfullarray[i]);
        myfullarray.splice(i,1);
    }
}
于 2013-09-24T21:05:42.610 に答える