2016-10-21 5 views
-4

非常に簡単な質問 配列を特定の値で並べ替え、常に中間に配置したいと考えています。例えば ...私の配列の場合:middlelizeArrは(myarr、2)私は、この配列を返す必要があります配列を値で配列して中間に配置

myarr = [1,2,3,4,5]; 

機能:

result [5,1,2,3,4] 

とさえ配列

の場合に最良の状態を見つけます
myarr = [1,2,3,4,5,6,7,8]; 

result [7,8,1,2,3,4,5,6]; 

どうすればいいですか?誰かが私を助けることができますか?

+2

あなたが何をしようとしました:これはあなただけmyArray.middlelize(2);がそうのように行われることになる

言うことができますか? – epascarello

+0

なぜこれをやりたいですか? – nicovank

+0

1)助けを求める前に、あなたが試みたことを私たちに示す必要があります。 2)コードを考えないでください。あなたがそれぞれに書かれた数字を持つ紙の小片でバケツの束を持っていると想像してください。 **あなたはそれをどのように並べ替えるのですか?いくつかの異なる数字でそのプロセスを試してみて、あなたのアルゴリズムを得ました。それをコードに翻訳すると、完了です。 –

答えて

0

あなたは=番号の位置を最初にあなたが 、配列のサイズを持っていて、場合途中

に入れたい番号の場所を見つける必要があるのn =配列 リットルの大きさ中に入れたい場合はn/2> lの場合

ならば時計回りに、それ以外の場合は反時計回りにシフトしてください。

0

これは、「中間」番号のインデックスと配列の長さを比較し、それらが等しくなるまでシフト(およびプッシュ)することによって行われます。

私はそれを次のように実装しました:

function middlelizeArray(array, middle) { 
    var goal = Math.trunc(array.length/2); 

    while(array.indexOf(middle) != goal) { 
     array.push(array.shift()); 
    } 
    return array; 
} 

これは、アレイのプロトタイプに直接追加することができます。

Array.prototype.middlelize = function(middle) { 
    var goal = Math.trunc(this.length/2); 
    while(this.indexOf(middle) != goal) { 
     this.push(this.shift()); 
    } 
    return this; 
} 
+0

と私はObjで同じことをしたいのですか? たとえば... liの特定の値でリストULを注文したいので...私の構造は...

  • 1
  • 2
  • 3 4 5 6
これはどのようにして注文できますか? これは動作しません。 $( 'ul')。find( 'li')。middlelize(7); – user2156006

関連する問題