1

この目的のために、単純化してより少ないコード行を使用できるかどうか疑問に思います。

「ワーカー」というクラスがあり、そのクラスには、一連の単純な配列からプロパティ (名前、年齢など) を読み取るメソッドがあります。

そこまでは、すべて問題ありません。ここで、追加したいプロパティの 1 つは、労働者が活動している月を参照するブール値です。とりあえず、以下のように解決しました。

var months_worker_1 = [{"jan":true},{"feb":true},{"mar":true},{"apr":false}] //and so on

そして、私のプロパティは を読み取りますmonths_worker_1が、ワーカーごとにそのような配列が 1 つあります。たとえば、年のすべての月で「マスター」配列を作成し、各ワーカーの配列で、彼らが働いている月だけを指定するなど、より少ないコード行を必要とするこれを行う方法があるかどうか疑問に思います. それらの月は「true」になり、それ以外の月は指定しなくても自動的に「false」になります.もっと簡単な方法があるはずです...

どうもありがとう!

編集:明確にしますが、「全体像」はありません。私はjavascriptを学ぼうとしていくつかの演習を行っていますが、これは私の興味を呼び起こしました. 達成する必要のある特定の目標はありません。これを行う方法を学んでいるだけです。

4

1 に答える 1

1

私が時々使用する非常に優れたトリックは、一定量のフラグを追跡するために 2 進数を使用し、格納や URL の埋め込みなどを容易にするために 10 進数に変換することです。ユーザーの Mark がすべての月にアクティブであると仮定しましょう。今年の。1「アクティブ」と「非アクティブ」を意味する 2 進数を考えると0、マークのフラグは次のようになります。

111111111111(12ヶ月)

マークが 1 月、2 月、12 月の間だけアクティブである場合、彼のフラグ値は次のようになります。

11000000001

1特定の月にマークがアクティブかどうかを確認するのは、マークのフラグでその月のインデックスに対応する文字がまたはであるかどうかを確認するのと同じくらい簡単です0

この手法は、URL を適度に短く保ちながら、URL を介して多数のフラグの値を送信するのに役立ちました。もちろん、これはおそらく必要ありませんが、知っておくと便利です。

JS では、2 進数から 10 進数への変換は簡単です。

parseInt(11000000001, 2).toString(10); // returns 1537

そしてその逆:

parseInt((1537).toString(2)); // returns 11000000001

編集

月の数字から作成された配列を同じように簡単に使用できます。

var months_worker_1 = [1, 2, 3]; // this would mean that the user is active during january, february and march
于 2012-11-05T12:37:28.097 に答える