JavaScript如何对对象数组按score字段降序排序后提取name字段值
实现方案
你可以通过数组的sort和map组合调用实现需求,完整代码如下:
const obj = { "total": [{ "name": "asdf", "score": 8 }, { "name": "zxcv", "score": 4 }, { "name": "qwer", "score": 17 }, { "name": "poiu", "score": 8 }, { "name": "lkjh", "score": 6 } ] } const result = obj.total // 按score降序排序 .sort((a, b) => b.score - a.score) // 提取所有name字段组成新数组 .map(item => item.name) console.log(result) // 输出:["qwer", "asdf", "poiu", "lkjh", "zxcv"]
逻辑说明
sort((a, b) => b.score - a.score):数组排序的比较函数返回b的score减去a的score,就能实现按score从大到小降序排列。ES2019之后标准规定JS的sort为稳定排序,score值相同的元素会保留原数组中的相对顺序,刚好匹配预期输出中asdf排在poiu之前的要求。map(item => item.name):遍历排序后的数组,将每一项的name属性提取出来,组成新的数组返回。
内容的提问来源于stack exchange,提问作者Geonwoo1109
相关产品推荐
相关产品推荐

