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

时间:2019-05-10 21:05:28

标签: javascript ecmascript-6 ramda.js

这似乎与我使用的许多Ramda函数有关。例如,我正在阅读mergeAll的文档: https://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}

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

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

1 个答案:

答案 0 :(得分:0)

那只是REPL输出格式的产物。

使用console.log

Another version表明它们确实符合您的期望。但是,我非常同意Pointy的观点,应该避免在几乎所有东西上都依靠此命令。

Ramda团队has discussed实际上在创建对象时按字母顺序对键进行排序,以避免出现某些类型的错误。这是有争议的,即使几年后也没有做出任何决定。