gpt4 book ai didi

javascript - 如何在 javascript 中为 Array 制作重复原型(prototype)方法的原型(prototype)

转载 作者:行者123 更新时间:2023-12-02 07:02:26 25 4
gpt4 key购买 nike

我正在尝试为 js 数组原型(prototype)实现一个重复方法,它将数组的副本连接到自身,如下所示:

[11,22,3,34,5,26,7,8,9].duplicate(); // [11,22,3,34,5,26,7,8,9,11,22,3,34,5,26,7,8,9]

这是我所拥有的,但它会导致浏览器崩溃:

var array = [11,22,3,34,5,26,7,8,9];

Array.prototype.duplicate = function() {

var j = this.length;

for(var i = 0; i < this.length; i++) {
this[j] = this[i];
j++;
}

return this;
}

我正在尝试使用 native JS 作为迭代和算法的实践来做到这一点,因此我尽量避免使用内置方法,以便我可以更清楚地了解事物是如何移动的。

关于崩溃的原因以及我如何优化它有什么想法吗?

最佳答案

循环内的代码改变了数组的长度,所以它会一直增长,你永远不会到达它的末尾。获取变量中数组的初始长度并在循环条件中使用。您也可以将其用作目标索引的偏移量,而不是另一个计数器:

var array = [11,22,3,34,5,26,7,8,9];

Array.prototype.duplicate = function() {

var len = this.length;

for (var i = 0; i < len; i++) {
this[len + i] = this[i];
}

return this;
}

关于javascript - 如何在 javascript 中为 Array 制作重复原型(prototype)方法的原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18262431/

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