gpt4 book ai didi

javascript - 获取下一个数组元素

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

假设我想用装饰器数组替换对象数组:

var arr = [{id:1, text: "text1"}, {id:2, text: "text2"}, {id:3, text: "text3"}]; 

arr.forEach(function(el, idx){
var newEl = new NewEl(el.id, el.text, arr[idx + 1], idx);
arr[idx] = newEl;
}, this);

console.log(arr);

function NewEl(id, text, nextEl, idx){
this.id = id;
this.text = text;
this.next = nextEl;
}

nextEl 仍将引用旧对象,而不是数组中的下一项(无论该元素是什么)。
如何将对数组中下一个元素(位置)的引用传递给构造函数?

注意:如果可能,我不想通过修改循环内的逻辑来使用解决方法(解决方法涉及在下一次迭代时在前一个元素上设置“下一个”)。

这可能吗?

最佳答案

在创建引用之前您不能使用该引用(我确信这是显而易见的)。所以不改变循环看前面是很难解决的。但是,如果您必须在不查看先前创建的项目的情况下解决该问题,则可以更改 NewEl 以接收完整数组下一个索引而不是实际的引用。类似于以下内容:

function NewEl(id, text, arr, nextIndex){
this.id = id;
this.text = text;
this.arr = arr;
this.nextIndex = nextIndex;
}

NewEl.prototype.getNext = function(){
return this.arr[this.nextIndex];
};

这个想法是,在创建引用之前使用引用的唯一方法是实际不使用它,而是存储稍后访问它的方式。然而,这是一种糟糕的方法,因为对数组的任何更改都会破坏 getNext() 函数。

tldr;您实际上应该更改循环以在下一次迭代中引用前一项。

关于javascript - 获取下一个数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37234354/

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