2017-03-02 12 views
0

私は人々の名前を配列で表される異なるテーブル(table1、table2、table3、table4)に並べ替えるプログラムを作成しています。それらと同じテーブルに座ってください。私は、重複する名前がなく、テーブルの長さが6を超えていないことを確認する関数check()を持っています。問題はcheck()関数が必要とするテーブルから設定を移動します。これを起こさないようにする方法はありますか?ありがとうございました。関数が配列の特定の部分に影響を及ぼさないようにする

はJavaScript:

$(document).ready(function() { 

    var table1 = []; 
    var table2 = []; 
    var table3 = []; 
    var table4 = []; 
    var names = []; 
    var pref = []; 

    function seat() { 
     for (var i = 0; i < names.length; i++) { 
      if (pref != "") { 
       if (pref == names[i]) { 
        var who = names[i]; 
        function prandomize(min, max) { 
         var pr = Math.floor(Math.random() * (max - min + 1)) + min; 
         if (pr == 1) { 
          table1.push(names[i]); 
          table1.push(who); 
         } else if (pr == 2) { 
          table2.push(names[i]); 
          table2.push(who); 
         } else if (pr == 3) { 
          table3.push(names[i]); 
          table3.push(who); 
         } else if (pr == 4) { 
          table4.push(names[i]); 
          table4.push(who); 
         } else { 
          return "Error: Contact Source Code Author!!"; 
         } 
        } 
       } 
      } 

      function randomize(min, max) { 
       var r = Math.floor(Math.random() * (max - min + 1)) + min; 
       if (r == 1) { 
        table1.push(names[i]); 
       } else if (r == 2) { 
        table2.push(names[i]); 
       } else if (r == 3) { 
        table3.push(names[i]); 
       } else if (r == 4) { 
        table4.push(names[i]); 
       } else { 
        return "Error: Contact Source Code Author!!"; 
       } 
      } 
      randomize(1, 4); 
     }; 
     console.log(table1); 
     console.log(table2); 
     console.log(table3); 
     console.log(table4); 
     console.log("first call"); 
    }; 

    var htable1 = document.getElementById('t1'); 
    var htable11 = document.getElementById('t11'); 
    var htable111 = document.getElementById('t111'); 
    var htable1111 = document.getElementById('t1111'); 
    var htable11111 = document.getElementById('t11111'); 
    var htable111111 = document.getElementById('t111111'); 

    var htable2 = document.getElementById('t2'); 
    var htable22 = document.getElementById('t22'); 
    var htable222 = document.getElementById('t222'); 
    var htable2222 = document.getElementById('t2222'); 
    var htable22222 = document.getElementById('t22222'); 
    var htable222222 = document.getElementById('t222222'); 

    var htable3 = document.getElementById('t3'); 
    var htable33 = document.getElementById('t33'); 
    var htable333 = document.getElementById('t333'); 
    var htable3333 = document.getElementById('t3333'); 
    var htable33333 = document.getElementById('t33333'); 
    var htable333333 = document.getElementById('t333333'); 

    var htable4 = document.getElementById('t4'); 
    var htable44 = document.getElementById('t44'); 
    var htable444 = document.getElementById('t444'); 
    var htable4444 = document.getElementById('t4444'); 
    var htable44444 = document.getElementById('t44444'); 
    var htable444444 = document.getElementById('t444444'); 

    function check() { 
     var stable1 = table1.slice().sort(); 
     for (var i = 0; i < table1.length - 1; i++) { 
      if (stable1[i + 1] == stable1[i]) { 
       table1.splice(i, 1); 
       console.log("removed"); 
      } 
     } 
     if (table1.length > 6) { 
      while (table1.length > 6) { 
       var lastvalue = table1.pop(); 
       table2.push(lastvalue); 
       console.log("moved to table2"); 
      } 
     } 
     if (table2.length > 6) { 
      while (table2.length > 6) { 
       var lastvalue2 = table2.pop(); 
       table3.push(lastvalue2); 
       console.log("moved to table3"); 
      } 
     } 
     if (table3.length > 6) { 
      while (table3.length > 6) { 
       var lastvalue3 = table3.pop(); 
       table4.push(lastvalue3); 
       console.log("moved to table4"); 
      } 
     } 
     if (table4.length > 6) { 
      while (table4.length > 6) { 
       var lastvalue4 = table4.pop(); 
       table1.push(lastvalue4); 
       console.log("moved to table1"); 
      } 
     } 
    } 

    function changeHTML() { 
     htable1.innerHTML = table1[0]; 
     htable11.innerHTML = table1[1]; 
     htable111.innerHTML = table1[2]; 
     htable1111.innerHTML = table1[3]; 
     htable11111.innerHTML = table1[4]; 
     htable111111.innerHTML = table1[5]; 

     htable2.innerHTML = table2[0]; 
     htable22.innerHTML = table2[1]; 
     htable222.innerHTML = table2[2]; 
     htable2222.innerHTML = table2[3]; 
     htable22222.innerHTML = table2[4]; 
     htable222222.innerHTML = table2[5]; 

     htable3.innerHTML = table3[0]; 
     htable33.innerHTML = table3[1]; 
     htable333.innerHTML = table3[2]; 
     htable3333.innerHTML = table3[3]; 
     htable33333.innerHTML = table3[4]; 
     htable333333.innerHTML = table3[5]; 

     htable4.innerHTML = table4[0]; 
     htable44.innerHTML = table4[1]; 
     htable444.innerHTML = table4[2]; 
     htable4444.innerHTML = table4[3]; 
     htable44444.innerHTML = table4[4]; 
     htable444444.innerHTML = table4[5]; 
    } 

    function namesdefine() { 
     names.push(document.getElementById('nameone').value); 
     names.push(document.getElementById('nametwo').value); 
     names.push(document.getElementById('namethree').value); 
     names.push(document.getElementById('namefour').value); 
     names.push(document.getElementById('namefive').value); 
     names.push(document.getElementById('namesix').value); 
     names.push(document.getElementById('nameseven').value); 
     names.push(document.getElementById('nameeight').value); 
     names.push(document.getElementById('namenine').value); 
     names.push(document.getElementById('nameten').value); 
     names.push(document.getElementById('nameeleven').value); 
     names.push(document.getElementById('nametwelve').value); 
     names.push(document.getElementById('namethirteen').value); 
     names.push(document.getElementById('namefourteen').value); 
     names.push(document.getElementById('namefifthteen').value); 
     names.push(document.getElementById('namesixteen').value); 
     names.push(document.getElementById('nameseventeen').value); 
     names.push(document.getElementById('nameeighteen').value); 
     names.push(document.getElementById('namenineteen').value); 
     names.push(document.getElementById('nametwenty').value); 
     names.push(document.getElementById('nametwentyone').value); 
     names.push(document.getElementById('nametwentytwo').value); 
     names.push(document.getElementById('nametwentythree').value); 
     names.push(document.getElementById('nametwentyfour').value); 
     console.log(names); 
     var testvar = document.getElementById('nameone').value; 
     console.log(testvar); 
     console.log("Look here please"); 
    } 

    function prefsdefine() { 
     pref.push(document.getElementById('prefone').value); 
     pref.push(document.getElementById('preftwo').value); 
     pref.push(document.getElementById('prefthree').value); 
     pref.push(document.getElementById('preffour').value); 
     pref.push(document.getElementById('preffive').value); 
     pref.push(document.getElementById('prefsix').value); 
     pref.push(document.getElementById('prefseven').value); 
     pref.push(document.getElementById('prefeight').value); 
     pref.push(document.getElementById('prefnine').value); 
     pref.push(document.getElementById('preften').value); 
     pref.push(document.getElementById('prefeleven').value); 
     pref.push(document.getElementById('preftwelve').value); 
     pref.push(document.getElementById('prefthirteen').value); 
     pref.push(document.getElementById('preffourteen').value); 
     pref.push(document.getElementById('preffifthteen').value); 
     pref.push(document.getElementById('prefsixteen').value); 
     pref.push(document.getElementById('prefseventeen').value); 
     pref.push(document.getElementById('prefeightteen').value); 
     pref.push(document.getElementById('prefnineteen').value); 
     pref.push(document.getElementById('preftwenty').value); 
     pref.push(document.getElementById('preftwentyone').value); 
     pref.push(document.getElementById('preftwentytwo').value); 
     pref.push(document.getElementById('preftwentythree').value); 
     pref.push(document.getElementById('preftwentyfour').value); 

    } 

    document.getElementById('sbm').addEventListener('click', function (e) { 
     e.preventDefault(); 
     namesdefine(); 
     prefsdefine(); 
     seat(); 
     check(); 
     check(); 
     check(); 
     changeHTML(); 
    }); 

    console.log(table1); 
    console.log(table2); 
    console.log(table3); 
    console.log(table4); 
    console.log("second call"); 
    console.log(pref); 

}); 
+1

ループと 'if'文の中で関数を宣言するのは悪い考えです。厳密なモードではエラーとしてフラグが立てられます(必ずしもそうではないが、いくつかのインタプリタ)。 – Pointy

+0

このコードの外観だけで、私はそれが好きではありませんでした。 – Redu

+0

'click'ハンドラで' check() 'コールを3回行うのはなぜですか? – rasmeister

答えて

0

私はあなたがあまりにも多く、さらに移動しようとする前に、使用しているデータ構造上のあなた最初にフォーカスすることを示唆しています。あなたがperson2と一緒に座ってみたいperson1を持っていて、person2がperson6のそばに座っていたいと思うので、好みの扱いは最初よりやりにくいです。これは扱うのが簡単ではない一連の嗜好を作り出します。

これに取り組む前に、4つのテーブルではなく1つのデータ構造を作成することをお勧めします。

{ name: 'xxx', preference: 'yyy', table: n }

あなたがオブジェクト、またはオブジェクトの配列に慣れていない場合、私はあなたが学習にあなたの努力を集中することを示唆している:このデータ構造は次のようになりますサイズ24の保持オブジェクトの配列であるかもしれませんそれらはJavaScriptでは絶対不可欠なので配列は便利ですが、実際には、非常に単純なリストやオブジェクトを保持するためのコンテナになる傾向があります。

私はあなたの欲しいことをするコードを提供することができましたが、私はあなたの学習曲線に役立つとは思わないでしょう。別のデータ構造を適用する際に刺すようにしてください。もしあなたがそこにこだわっていたら、おそらくSOに新しい質問を投稿してください。助けたい人がたくさんいますが、途中で援助を受けるために宿題をする必要があります。

+0

ありがとう、助けてくれてありがとう。私はあなたが言ったようにデータ構造を実装しようと考えています。 – jscoder001

+0

テーブルのプロパティを設定するほうが、あるアレイから別のアレイにエントリを移動するよりも、テーブルが存在するテーブルを示す方がずっと簡単です。運が良ければ...そしてすぐにあなたからのより多くの質問をすぐに見てください! – rasmeister

+0

はい、私は、オブジェクトデータ構造を最初に使用していたほうがどれくらい簡単になったのか分かりました。私はほぼ完了しているとうまくいけば、すべてうまくいく。 – jscoder001

関連する問題