【发布时间】:2016-06-21 21:41:00
【问题描述】:
JavaScript 是否以某种方式支持指针运算?
例如,我有数组
var arr = [1,2,3,4];
console.log(arr); /* this prints [1,2,3,4] */
是否可以这样做:
var arr2 = arr + 2; /* obviously this is not the correct way */
console.log(arr2); /* this should have printed [3,4] */
无需创建数组的副本(我只需要 C 中的指针)。
我需要这个的具体原因如下:我有一个大数组,其中每个元素都是一对字符串,布尔值,例如
var arr = [['name1',true],['name2',false]];
我想将数组输入到 ng-repeat(我正在使用 Angular JS)。该数组由数千个这样的元素组成,并且来自服务/工厂(即通过引用返回)。我想在 4 列中显示数组的内容,每个字符串后面都有一个复选框。为此,我通过以下方式进行了 4 次 ng 重复:
<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>
这个方法很慢,因为我需要遍历数组4次。 我无法对数组进行预处理(即,将其分成四个等大的部分,我将在没有 ng-if 的情况下将它们传递给每个 ng-repeat),因为我使用 ng-model 指令来允许用户更新数组,并且反过来服务(这是自动完成的,因为数组是通过服务引用返回的)。
因此,(理论上)理想的情况是有四个指针(每个指针指向数组的特定部分),并使用 limitTo 过滤器将每个指针传递给 ng-repeat。
【问题讨论】:
-
不,因为它不使用这样的指针作为内存。 (它使用指针,但不支持 C 类型数学)
-
那会很好,但是会发生什么它会被转换成一个字符串
-
它确实支持索引。不知道你为什么不直接使用它?或拼接。
-
感谢您的回答。我将解释我的设置以及为什么我需要这些指针。我有一个巨大的数组(数千个元素),我需要将它输入到一个 ng-repeat(我正在使用 Angular JS)。数组内容将打印成四列,因此我需要运行 ng-repeat 四次,一次使用 ng-if="$index % 4 == 0",一次使用 ng-if="$index % 4 == 1" 等等。这使得加载太慢。我的想法是有 4 个指向适当数组位置的指针,并使用 limitTo 过滤器将每个指针提供给 ng-repeat。这只会通过数组一次而不是四次。
-
@Tomas 是否有一个原因,您不能遍历列表一次并在遇到元素时将列数据插入正确的位置?
标签: javascript arrays angularjs