答案 0 :(得分:30)
var cyclic = {};
cyclic.somekey = cyclic;
cyclic.another = "Hello world!";
现在你可以这样做,例如:
alert(cyclic.somekey.somekey.somekey.another);
答案 1 :(得分:8)
如果您将数据结构的成员想象成图形,则循环数据结构是成员引用另一个成员或结构本身的位置。
例如:
var obj = new Object();
obj.left = new Object();
obj.left.left = obj;
这在JSON中无法表示,您需要以某种方式引用外部{}
部分:
{ "left": { "left": ??? } }
答案 2 :(得分:2)
该对象包含一个循环,即它引用自身,或者更一般地说,它直接或通过某些属性引用的某个对象是原始对象。
var $this = { };
$this["self"] = $this;
或更可能
var child = { parent: null };
var parent = { child: child };
child.parent = parent;
答案 3 :(得分:2)
循环数据结构是保持对其自身(直接或间接)的引用的结构。 另请参阅http://en.wikipedia.org/wiki/Circular_reference
以下是此类结构的示例:
var c = { value: 'abc' };
c['c'] = c;
c['a'] = { value: c };
如果您尝试递归打印其字符串表示形式,最终会出现堆栈溢出,因为要打印值c
,您必须打印c
的值。
答案 4 :(得分:1)
带有循环图的数据结构:http://en.wikipedia.org/wiki/Cycle_graph
答案 5 :(得分:1)
js> var a = {label:"a", next:null};
js> var b = {label:"b", next:a};
js> a.next = b; // cycle is created here
[object Object]
js> print(a.next.label);
b
js> print(a.next.next.label);
a
js> print(a.next.next.next.label);
b
js> print(a.next.next.next.next.label);
a
答案 6 :(得分:1)
我想循环结构的教科书示例是doubly-linked list。每个元素都指向列表中的上一个和下一个元素。这意味着每个元素与前一个和下一个元素形成一个循环。
A --> B --> C
A <-- B <-- C
(这里每个A,B,C虽然写了两次是一个对象。)
指向B的点,如列表中的下一个。 B指向列表中的上一个A.所以从A到B有一个循环,然后回到A.对于列表中的每个元素都是如此,元素不在头部或尾部,而是两个周期。
序列化这样的列表的一个解决方案是使用ID来表示每个对象。这将删除结构中的循环。然后我们可以写出
list: {
items:
{ id:"a", value1: ... etc },
{ id:"b", values .... },
{ id:"c", values .... }
links:
{ elem:"a", next:"b" },
{ elem:"b", next:"c", prev: "a"},
{ elem:"c", prev:"b" }
}
答案 7 :(得分:1)
CYCLE:您返回同一地点的情况。
循环数据结构:可能出现此类情况的数据结构。例如图表,链表(单/双),出列等。
JS中的链表节点实现为:
function Node(data){
this.data = data;
this.next = null;
}
现在我创建了两个这样的节点,如下所示:
var node1 = new Node(10);
var node2 = new Node(20);
并将它们联系起来形成一个循环。
node1.next = node2;
node2.next = node1;
以下遍历代码将进入一个无限循环,显示存在循环。
node = node1;
while(node!==null){
print(node.data);
node = node.next;
}
答案 8 :(得分:-2)
如果你有:
var a = {value: 'a'};
var b = {value: a};
var c = {value: a};
在JSON for b中它看起来像:
"{value: {value: 'a'}}"
在JSON for c中它看起来像:
"{value: {value: 'a'}}"
没有指针。