这似乎与我使用的许多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}
对象键正在按字母顺序排序。这是预期的行为,并且文档不正确吗?
我正在尝试做一些在键顺序相当重要的事情,而这种按字母排序的排序证明是个问题! :(
答案 0 :(得分:0)
那只是REPL输出格式的产物。
使用console.log
的Another version表明它们确实符合您的期望。但是,我非常同意Pointy的观点,应该避免在几乎所有东西上都依靠此命令。
Ramda团队has discussed实际上在创建对象时按字母顺序对键进行排序,以避免出现某些类型的错误。这是有争议的,即使几年后也没有做出任何决定。