当 JSON.stringify lodash 合并对象的结果时出现 IE11 错误



OS Windows 8.1 |IE11 - v11.0.9 |洛达什 - v4.17.4

鉴于我使用 lodash 合并将一个对象合并到另一个对象中。其中要合并的对象具有数字(整数或字符串)、键。结果被馈送到JSON.stringify。然后我应该看到两个对象合并到结果字符串中。

const a = {
  '1': 1
};
const b = {
  key: {
    '2': 2
  }
};
_.merge(a, b);
console.log(JSON.stringify(a)); //-> {"1":1,"key":{}}

期望:{"1":1,"键":{"2": 2}}

实际:{"1":1,"键":{}}

JsFiddle: https://jsfiddle.net/0a7euzas/10/

有趣的是,如果我将带有字母字符的属性或附加/前置的字母字符添加到键对象的"2"属性中,则输出字符串是正确的。

Windows

8.1 上的 IE11 似乎在任何深度都存在JSON.stringify错误,如果一个对象在 UINT32_MAX - 1 下只有数字键,它会将其序列化为空对象。

这是我见过的唯一一次其他情况。正如你所注意到的,这个穷人的解决方案是添加一个字母数字键,并在回来的路上反序列化时忽略它。

代码库中的示例

最新更新