以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - JavaScript 代码题
21. 手写JSON.stringify()
function myStringify(obj) { // your code here}
举个例子:
const obj = { message: "hello, world", count: 10, nested: { flag: true, array: [1, 2, 3] }};console.log(myStringify(obj));// expect output: // '{"message":"hello, world","count":10,"nested":{"flag":true,"array":[1,2,3]}}'
另外一个例子:
const obj1 = { prop1: "hello", prop2: "BFE", toString() { return `${this.prop1} ${this.prop2}` }}const obj2 = { a: obj1, b: [obj1, obj1], c: { d: obj1, e: [obj1, obj1] }}obj1.self = obj1obj2.f = obj2console.log(myStringify(obj2)) // expect output: // {"a":"hello BFE","b":["hello BFE","hello BFE"],"c":{"d":"hello BFE","e":["hello BFE","hello BFE"]},"self":"[Circular ~]","f":"[Circular ~]"}
要求:
- 不得使用
JSON.stringify()
- 不得使用
eval()
等求值函数 - 不得修改原有的结构体
提示:
- JSON 中的 Object 与 JavaScript 中的 Object 不一样,JSON 中不允许有函数、不允许有循环引用
- 可以使用递归
- 使用 RegExp 判断类型时须考虑全面