javascript - RamdaJS : After an object operation my keys are getting re-ordered alphabetically? 是预期的吗?

标签 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}

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

我现在正在尝试做一些事情,其中​​按键顺序相当重要,并且这种字母排序被证明是一个问题! :(

最佳答案

这只是 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/

相关文章:

javascript - 使用自定义汉堡包按钮使用 jQuery 触发 MDBootstrap 侧边导航

javascript - .NET Core API 与来自 JavaScript 的 CORS

Javascript - 对象字段未定义

javascript - 使用原生 ES6 并在需要时进行转译

javascript - ramda 从基础对象 reshape 对象结构

ramda.js - Ramda - 如何向嵌套对象添加新属性

javascript - 在 Canvas 中找到圆弧中心

javascript - 获取对象的任意属性

javascript - 如何在 Ramda 中的对象属性之间移动值?

javascript - 如何在页面上显示字符串