gpt4 book ai didi

javascript - JavaScript 中的数组指针

转载 作者:行者123 更新时间:2023-11-28 05:52:45 26 4
gpt4 key购买 nike

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 中那样的指针)。

我需要这个的具体原因如下:我有一个大数组,其中每个元素都是一对字符串、 bool 值,例如

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。

最佳答案

不,JavaScript 不会为您提供这种内存级别访问权限。

你能做的最好的事情(确实创建了一个副本)就是滥用 slice如果您想从给定位置开始传递数组的部分内容。显然,只有当您在数组中向前移动而不是向后移动时,这才有效。

var arr = [1, 2, 3, 4, 5];

// Kinda, sorta but not really create a pointer at a given point in the array
// It doesn't actually refer to the original array. It creates a copy of a subsection of the array
var pretendPointerButNotAtAll = arr.slice(2);

// Almost like doing pointer arithmetic. You get the same value as doing arr[4]
// or arr + 4 in a language with pointers
var elementAtOffset = pretendPointerButNotAtAll[2];
console.log(elementAtOffset);

关于javascript - JavaScript 中的数组指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37955046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com