在尝试了几种实现方式以进行深度比较并复制可序列化的JSON对象之后,我注意到最快的往往是:
function deep_clone(a){ return JSON.parse(JSON.stringify(a)); }; function is_equal(a,b){ return JSON.stringify(a) === JSON.stringify(b); };
不过,我觉得这很欺骗。就像我会发现一些困扰我未来的问题。使用这些可以吗?
JavaScript不保证键的顺序。
如果以相同的顺序输入它们,则这种方法在大多数情况下会起作用,但并不可靠。
同样,对于深度相等但以不同顺序输入其键的对象,它将返回false:
JSON.stringify({ a: 1, b: 2}) === "{"a":1,"b":2}" JSON.stringify({ b: 2, a: 1}) === "{"b":2,"a":1}"