根据It seems that the documentation is wrong的答案,JSON.parse()
的时间复杂度为O(n)
。
这对JSON.stringify()
是否成立?似乎没有任何地方可以证明这一点。
答案 0 :(得分:4)
它应该是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({{1}的元素})+ 2(obj.c
的元素)= 12
这也将字符串化字符串视为常量,但实际上它们是O(n),其中n`是字符串的长度。但是,除非对象中有很多长字符串,否则差异可能并不明显。