我正在使用的很多 Ramda 函数似乎都会发生这种情况。作为一个例子,我正在阅读 mergeAll
的文档:
https://ramdajs.com/docs/#mergeAll
文档示例指出:
R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3}
这就是我想要的!
如果我在 Ramda REPL 中尝试完全相同的命令:
输出为:
{"bar": 2, "baz": 3, "foo": 1}
对象键按字母顺序排序。这是预期的行为并且文档不正确吗?
我现在正在尝试做一些事情,其中按键顺序相当重要,并且这种字母排序被证明是一个问题! :(
最佳答案
这只是 REPL 输出格式的产物。
Another version使用 console.log
显示它们确实按照您期望的顺序排列。然而,我强烈同意 Pointy 的观点,即人们应该避免在任何事情上依赖这一订单。
Ramda 团队 has discussed实际上,在创建对象时会按字母顺序对键进行排序,以避免出现某种类型的错误。这是有争议的,并且即使在几年后也没有做出任何决定。
关于javascript - RamdaJS : After an object operation my keys are getting re-ordered alphabetically? 是预期的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56084834/