代码之家  ›  专栏  ›  技术社区  ›  MirroredFate

json.stringify()的时间复杂性是什么?

  •  1
  • MirroredFate  · 技术社区  · 6 年前

    根据 this 答案,时间的复杂性 JSON.parse() O(n) .

    这个对吗 JSON.stringify() ?似乎没有任何地方可以证明这一点。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Barmar    6 年前

    应该是O(N),但是 n 是要字符串化的值的整个对象层次结构中的节点数。所以如果你有一个数字数组, n array.length . 但是如果你有一个像这样的物体:

    var obj = 
        { a: [1, 2, 3],
          b: { x: 1, y: z },
          c: { q: [1, 2], r: "abc" }
        }
    

    n 是3(属性 obj )+3(要素 obj.a )+2(要素 obj.b )+2(要素 obj.c )+2(要素 obj.c.q = 12

    这也将字符串串化视为常量,但实际上它们是O(n),其中n'是字符串的长度。但是,除非对象中有很多长字符串,否则差异可能并不显著。