我很难找到这个问题的答案。
我想在 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/