gpt4 book ai didi

javascript - 如何在 Typescript 中对循环对象进行字符串化?

转载 作者:行者123 更新时间:2023-12-05 06:26:36 24 4
gpt4 key购买 nike

我正在尝试在我的 typescript 中对循环对象进行字符串化。这是我的原始代码和错误:

app.component.ts:

updateList(list: any) {
this.demolist = Array.apply(this, list);
console.log('List - ' + JSON.stringify(this.demolist));
}

TypeError: cyclic object value

然后我在我的 updateList() 方法中尝试了以下代码:

const getCircularReplacer = () => {
const seen = new WeakSet();
return (key, value) => {
if (typeof value === "object" && value !== null) {
if (seen.has(value)) {
return;
}
seen.add(value);
}
return value;
};
};
console.log(JSON.stringify(this.demolist, getCircularReplacer()));
}

但现在我收到了这个错误:

TypeError: toISOString property is not callable

谁能告诉我需要做哪些更改才能显示我的 this.listBase 的内容?

这是我的 HTML:

<upload #fileUpload (listChange)="updateList($event)" data-kind="primary" restrictFiles=".pdf,.doc,.docx">
</upload>

<list #listBase [IncludeComponent]="inputComponent" [list]="demolist">
</list>

最佳答案

您遇到的错误:

TypeError: toISOString property is not callable

意味着某处某个对象的名为toISOString属性 已被调用,就好像它是一个方法一样。例如:

someObj.toISOString();

在 Javascript 中已知的唯一内置并命名为 toISOString 的方法是 Date.prototype.toISOString

JSON.stringify() 了解一些标准值类型以及如何将它们转换(序列化)为字符串。它通常通过对它们调用预期存在的 toString() 方法来实现。它还知道 Date 对象有一个 toISOString() 方法,只要找到一个方法就会调用它。因此在这种情况下,我假设 JSON.stringify()this.demoList 中遇到了一个对象,虽然它是 Date 类型,但它有一个名为 toISOString 的已定义属性(而不是方法),它会覆盖现有的 Date.prototype.toISOString(),并且此时它尝试将其作为方法调用,但您收到此错误。

我无法猜测在您的特定情况下这个对象是哪个,因此我建议您应该使用一个一个(及其子对象)检查 this.demoList浏览器的开发人员工具,找出哪个是“有问题的”对象。

关于javascript - 如何在 Typescript 中对循环对象进行字符串化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55934290/

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