javascript - 按值对映射/哈希进行排序,保留键

标签 javascript underscore.js lodash immutable.js

我很难找到这个问题的答案。

我想在 JavaScript 中使用哈希,如下所示:

const hash = {
   a: 'A',
   c: 'C',
   b: 'B'
}

我想按对对象进行排序,这样它可能会变成:

const hash = {
   a: 'A',
   b: 'B',
   c: 'C',
}

现在,我意识到 POJSO 不能保证其键的顺序,因此我正在考虑使用 immutableJS 或某些可以保证哈希中键的顺序的对象。

所以我正在寻找类似的东西:

var newHash = Immutable.Map(hash).sortBy(function(key,val){
       return val;
});

但我不相信这存在。 这个要求是否太过分了?我怎样才能找到这个功能?

最佳答案

Lodash 一行:

sorted = _(hash).toPairs().sortBy(1).fromPairs().value();

实例:

var data = {a: 'A', c: 'C', b: 'B'};
var hash = _(data).toPairs().sortBy(1).fromPairs().value();
Object.getOwnPropertyNames(hash).forEach(n => {
  snippet.log("hash['" + n + "'] = " + hash[n]);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.6.1/lodash.min.js"></script>
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

关于javascript - 按值对映射/哈希进行排序,保留键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36079323/

相关文章:

javascript - 希望从 Swifttype.com 在我的网站中实现搜索功能,网站上的人员可以轻松搜索任何可用的内容

javascript - React JS 如何处理身份验证

javascript - .net 中的日期与 javascript 中的日期

javascript - 跨 Node.js 模块共享下划线 mixins

javascript - 将数据从 JSON 传递到 Backbone > 模板页面

javascript - 给定键列表,如何将对象的值作为数组获取?

javascript - 使用递归函数 trim 字段无法按预期工作

javascript - 什么是使用 getImageData、javascript、HTML5 canvas 导致内存泄漏

javascript - 在不使用 javascript 中的闭包的情况下传递给函数之前转换参数

javascript - 如何忽略lodash orderBy中的新行