javascript - 按字母顺序对 Object.entries 进行排序
问题描述
说我有这个:
for(let [k,v] of Object.entries({a:1,b:2}).sort((a,b) => b[0] - a[0])){
console.log({k,v});
}
我总是得到这个输出:
{ k: 'a', v: 1 }
{ k: 'b', v: 2 }
即使我将其切换为:
a[0] - b[0]
为什么我不能按字母顺序对键进行排序?
解决方案
在比较字符串时,使用localeCompare()几乎总是更好。它为您处理大小写、国际字符和数字提供了更多的灵活性和选项。它返回的正是sort()
想要的:
let arr = Object.entries({a:1,b:2})
arr.sort((a,b) => b[0].localeCompare(a[0]))
console.log(arr)
arr.sort((a,b) => a[0].localeCompare(b[0]))
console.log(arr)
推荐阅读
- python - 使用列表中的字符串通过循环创建多个函数
- haskell - 为什么 LiberalTypeSynonyms 在这种情况下没有帮助?
- label - Apex 图表时间轴 - 数据标签不与工具提示和标题同步
- react-hooks - 我想在反应中使用像全局状态这样的文本区域输入。但是我在上下文文件中有问题
- javascript - 将 XMLHttpRequest.responseText 保存到图像文件节点 js
- r - 根据偏好组合样本中的数字
- python - Django将现有字段更改为外键
- pytest - 如何解决在 bitbucket 管道中通过 xdist 并行运行 pytest 的错误
- node.js - 设置服务器时无法获取
- python - 计算非升序字符串的最大值