gpt4 book ai didi

javascript - 为什么下面的代码会出现循环引用错误?以及如何解决?

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

我创建了 JSON 对象,在此示例中发生了循环引用错误。为什么会出现循环引用错误以及如何解决循环引用错误?提供有关此问题的完整详细信息吗?代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
</head>
<body>

<script type="text/javascript">

var data = { "Id": 100, "Name": "Name 1", "Children": [{ "Id": 200, "Name": "Name 2", "Children": null }, { "Id": 300, "Name": "Name 3", "Children": null }] };

var record=createRecord(data,null);

JSON.stringify(record);

function createRecord(data,parentItem) {

var record,
childDataSource = data["Children"];

//CLONE THE DATA OBJECT
record = $.extend({}, data);

record.parentItem = parentItem;
record.item = data;
record.childRecords = childDataSource && createChildRecords(childDataSource, record);
return record;
}


function createChildRecords(childDataSource, parentItem) {

var proxy = this,
records = [],
count = 0,
length = childDataSource.length,
record = null,
childRecord;

for (count = 0; count < length; count++) {

record = childDataSource[count];

if (record) {
childRecord = createRecord(record, parentItem);
records.push(childRecord);
}
}

return records;

}

</script>

</body>
</html>

最佳答案

当你这样做时

record.parentItem = parentItem;

您添加从子对象到父对象的链接。

由于 JSON.stringify 递归地迭代对象的属性,因此它从父级到子级再到父级到子级等循环。

您无法精确地字符串化循环对象。一个“解决方案”是使用一个库,在字符串化时忽略生成循环的属性,就像我自己的 JSON.prune 。但如果您希望之后能够轻松地从 JSON 恢复对象,那么这并不是一个完整的解决方案。

循环数据结构通常是一个糟糕的设计。

关于javascript - 为什么下面的代码会出现循环引用错误?以及如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23678668/

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