You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS中对键值对数组按值排序后提取排序后的键

JS中对键值对数组按值排序后提取排序后的键

嗨,我来帮你搞定这个问题!你其实已经走对了大部分流程,只差最后一步提取键的操作啦~

首先,你的排序思路是对的,但有个小细节可以优化:Object.values(my_array)是多余的,因为my_array本身就是数组,直接调用.sort()方法就行。排序完成后,我们只需要用map()方法遍历排序后的数组,把每个子数组的第一个元素(也就是你需要的键)提取出来,就能得到想要的结果了。

给你完整的实现代码:

var my_array = [['line_1','2'],['line_2','3'],['line_3','5'],['line_4','1'],['line_5','4']];

// 按值排序后提取键
var sortedKeys = my_array.sort((a, b) => a[1] - b[1]).map(item => item[0]);

console.log(sortedKeys); // 输出:['line_4','line_1','line_2','line_5','line_3']

这里再给你拆解一下关键步骤:

  • sort((a, b) => a[1] - b[1]):因为数组里的值是字符串类型的数字,用减法运算会自动将它们转换为数值进行比较,这样就能实现按数值从小到大的正确排序。
  • map(item => item[0]):遍历排序后的数组,把每个子数组的第一个元素(也就是键)筛选出来,组合成新的数组,这就是你要的最终结果。

另外补充个小提示:sort()方法是原地修改原数组的,如果不想改动原来的my_array,可以先复制一份数组再排序,比如使用扩展运算符或者slice()方法:

// 先复制原数组,再排序提取键,不修改原数组
var sortedKeys = [...my_array].sort((a, b) => a[1] - b[1]).map(item => item[0]);

备注:内容来源于stack exchange,提问作者Nico44044

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 10:34:39