如何按对象中的数值对对象数组进行降序排序?
按对象内数值对数组降序排序的方法
现有如下JavaScript数组:
var arr = [{"apple":3}, {"pear":5}, {"orange":1}]
需要根据每个对象内部的数值进行降序排序,最终得到:
[{"pear":5}, {"apple":3}, {"orange":1}]
实现方法
直接使用数组的sort()方法,结合Object.values()提取对象中的数值完成排序:
var arr = [{"apple":3}, {"pear":5}, {"orange":1}]; arr.sort((a, b) => { // 提取每个对象的唯一数值 const valA = Object.values(a)[0]; const valB = Object.values(b)[0]; // 降序排序:用后一个数值减前一个数值 return valB - valA; }); console.log(arr); // 输出目标排序后的数组
说明
Object.values(a)[0]:由于每个对象仅包含一个键值对,通过Object.values()获取对象的数值数组后,取第一个元素就是对应的数值。sort()方法的比较函数返回valB - valA时,会让数组按数值从大到小排序;若要升序则返回valA - valB。
内容的提问来源于stack exchange,提问作者Aidenhsy
相关产品推荐
相关产品推荐

