JavaScript数组是否可以包含自身?

12
在Ruby中,一个数组可以包含自身,从而成为递归数组。那么在JavaScript中是否也可以将一个数组放在其内部?
在Ruby中,一个数组可以包含自身,从而成为递归数组。那么在JavaScript中是否也可以将一个数组放在其内部?
var arr = new Array();
arr[0] = "The next element of this array is the array itself."

现在我该如何将arr移动到arr[1],以便数组包含其自身的递归形式(例如,使arr[1]arrarr[1][1]包含arrarr[1][1][1]包含arr等)?


1
只需将其设置为 arrarr[1] = arr - gen_Eric
你可以这样做,但如果你需要将它发送到远程机器,这样做会导致 JSON.stringify 抛出错误。 - Paul
2个回答

16

当然:

var a = [1];
a.push(a);

它们是同一个对象:

a[1] === a[1][1]  // true

并且有一个令人信服的截图:

在此输入图片描述


1
由于 a[1] === a[1][1] === a[1][1][1] 实际上是错误的,将其分成两行可能更有意义:a[1] === a[1][1] // truea[1] === a[1][1][1] // true - Paul
1
@AndersonGreen 那看起来像是 Chrome 控制台的截图。 - Paul
1
@AndersonGreen 看起来像是谷歌开发者工具 - Kirill Ivlev
@Paulpro:谢谢。有时候你会忘记JavaScript不是Python。 - Blender
1
看起来像是 Chrome 浏览器开发者工具中的控制台(F12)。 - Vitor Canova
显示剩余3条评论

11

好的,当然:

var x = [];
x.push(x);
console.log(x[0] === x); // true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接