gpt4 book ai didi

引用数组位置(不是元素)的 Javascript 数组

转载 作者:数据小太阳 更新时间:2023-10-29 05:53:41 26 4
gpt4 key购买 nike

更新:

许多人问为什么不使用 [arr[0], arr[1]]。问题是我必须将这个数组传递给一个我无权访问的方法 Angular Material Table .而且我不想一遍又一遍地调用该方法。

我已经处理了 arr 数组,我不想处理 pointer 数组来反射(reflect)新数据,我已经知道它在哪里。

Nina Scholz answer似乎解决了这个问题。


有没有办法在 Javascript 中像 C 那样使用“指针”?

我想做的是:

我有一个包含对象的数组

const arr = [
{prop: 3},
{prop: 4},
];

并且我想要一个数组来指向这个数组的位置

const pointer = [arr[0], arr[1]]; // I want pointer to point to be an array containing the first and second elements of arr

这将获得对 {prop: 3}{prop: 4} 对象的引用,这不是我想要的,因为如果我这样做:

arr.splice(0, 0, {prop: 1}); // arr => [{prop:1},{prop:3},{prop:4}]
console.log(pointer); // [{prop: 3},{prop: 4}]

如您所见,pointer 持有对对象 {prop:3}{prop:4} 的引用。

如何实现 pointer 来保存对数组位置 0 的引用,而不是存储在其中的对象?那么,在这个例子中,pointer => [{prop:1},{prop:3}]?

我不能一直调用 pointer = [arr[0], arr[1]] 因为 arr 会不断地异步变化。

是否有处理数组的“响应式(Reactive)”方式?

最佳答案

如果你的指针总是指向同一个数组,你可以简单地存储索引。

const pointer = [0, 1];

然后你会使用:

console.log(pointer.map(ptr => arr[ptr]));

如果您的指针可以指向不同的数组,您可以使 pointer 的元素成为包含对数组及其索引的引用的对象。

const pointer = [{a: arr, i: 0}, {a: arr1, i: 1}];
console.log(pointer.map(({a, i}) => a[i]));

有趣的是:几十年前,我使用了 Symbolics Lisp Machines 的 C 实现。这基本上就是它表示 C 指针的方式。

关于引用数组位置(不是元素)的 Javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53991225/

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