JavaScriptは何らかの形でポインタ演算をサポートしていますか? (私はCのようにポインタを必要とする)配列のコピーを作成せずにjavacriptの配列ポインタ
var arr2 = arr + 2; /* obviously this is not the correct way */
console.log(arr2); /* this should have printed [3,4] */
:
例えば、私は配列
var arr = [1,2,3,4];
console.log(arr); /* this prints [1,2,3,4] */
のような何かをすることが可能です持っています。
私が必要とする具体的な理由は次のとおりです。各要素が文字列のペアである大きな配列を持っています。
var arr = [['name1',true],['name2',false]];
私は(私は角JSを使用しています)ngのリピートに配列を供給します。配列は、このような要素の数千から構成され、サービス/ファクトリに由来します(つまり、参照によって返されます)。配列の内容を4列に表示し、各文字列の後にチェックボックスを表示したい。これを行うには、私は次のように4 ngのリピートを持っている:私は配列を4回横断する必要があるため
<div class="col-lg-3">
<div class="checkbox" ng-repeat="x in arr" ng-if="$index % 4 == 0">
<label><input type="checkbox" ng-model="x[1]">{{x[0]}}</label>
</div>
</div>
<div class="col-lg-3">
<div class="checkbox" ng-repeat="x in arr" ng-if="$index % 4 == 1">
<label><input type="checkbox" ng-model="x[1]">{{x[0]}}</label>
</div>
</div>
<div class="col-lg-3">
<div class="checkbox" ng-repeat="x in arr" ng-if="$index % 4 == 2">
<label><input type="checkbox" ng-model="x[1]">{{x[0]}}</label>
</div>
</div>
<div class="col-lg-3">
<div class="checkbox" ng-repeat="x in arr" ng-if="$index % 4 == 3">
<label><input type="checkbox" ng-model="x[1]">{{x[0]}}</label>
</div>
</div>
この方法は非常に遅いです。 ng-modelディレクティブを使用してユーザーが配列を更新できるので、配列を前処理することはできません(つまり、ng-ifなしで各ng-repeatに渡す4つの等しい大きさの部分に分割します) (サービスからの参照によって配列が返されたため、これが自動的に行われます)。
したがって理想的には、4つのポインタ(それぞれが配列の特定の部分を指す)を持ち、limitToフィルタを使用して各ポインタをng-repeatに渡すのが理想的です。
いいえ、それはメモリのためにそのようなポインタを使用していないため。 (それはポインタを使用しますが、C型の数値演算をサポートする方法ではありません) – Nikki9696
がいいですが、それは文字列に変換されます –
それはインデックスをサポートします。なぜあなたはそれを使わないだけではないのか分かりません。またはスプライス。 – Nikki9696