猿问

RamdaJS:在执行对象操作后,我的键是否按字母顺序重新排序?预期的?

我使用的许多Ramda函数似乎都发生了这种情况。例如,我正在阅读以下文档mergeAllhttps : //ramdajs.com/docs/#mergeAll

文档示例指出:

R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3}

这就是我想要的

如果我在Ramda REPL中尝试完全相同的命令:

https://ramdajs.com/repl/?v=0.26.1#?R.mergeAll%28%5B%7Bfoo%3A1%7D%2C%7Bbar%3A2%7D%2C%7Bbaz%3A3%7D%5D% 29%3B

输出为: {"bar": 2, "baz": 3, "foo": 1}

对象键按字母顺序排序。这是预期的行为,并且文档不正确吗?

我正在尝试做一些在关键顺序相当重要的事情,而这种按字母顺序排列的排序证明是个问题!:(


HUX布斯
浏览 135回答 1
1回答

侃侃无极

那只是REPL输出格式的产物。另一个版本使用console.log说明他们是真的在你所期望的顺序。但是,我非常同意Pointy的观点,即应该避免在几乎任何事情上都依靠这一命令。Ramda团队已讨论了在创建对象时实际上按字母顺序对键进行排序的方法,以避免出现某种类型的错误。这是有争议的,即使几年后也没有做出任何决定。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答