JavaScript】js对象进行排序(对象转数组,对象转对象)

GokuCode 正式写手 2022-06-30 13:36:17
  1. e排序

 

方法1:象按照key排序

	Object.keys(aaa).sort((a,b){
	   // 代码逻辑,根据keys排序,如果a>b的排序使用a-b
	   // 这里的a,b就会根据return返回排序,如果a-b返回true就是a大b小,所以a在后b在前
	   return a-b
	})

如果有更复杂的代码可以使用代码逻辑,比如这个文章的开头的举例
它的key就是字符串2_4 这样的,但是2_8却大于2_16
在这里插入图片描述
这个时候我们就需要使用更复杂的逻辑进行排序,请看如下代码

# 方法1:把对象转为数组
let aaa = {"2_4":{"a":2,"b":4},"2_16":{"a":2,"b":16},"2_12":{"a":2,"b":12},"2_8":{"a":2,"b":8}}
let aa = Object.keys(aaa).sort((a,b)=>{
    a_list = a.split("_");
    b_list = b.split("_");
    return a_list[0]==b_list[0]?a_list[1]-b_list[1]:a_list[0]-b_list[0]
    // return aaa[a].sort-aaa[b].sort;
})
// 把排序好的结果放在新的数组中
let arr = [];
for (var sortIndex in aa) {
      arr.push(aaa[aa[sortIndex]])
    }
console.log(arr);


# 方法2:下面使用数组生成我们想要的排好序的对象

let aaa = {"2_4":{"a":2,"b":4},"2_16":{"a":2,"b":16},"2_12":{"a":2,"b":12},"2_8":{"a":2,"b":8}}
let aa = Object.keys(aaa).sort((a,b)=>{
    a_list = a.split("_");
    b_list = b.split("_");
    return a_list[0]==b_list[0]?a_list[1]-b_list[1]:a_list[0]-b_list[0]
    // return aaa[a].sort-aaa[b].sort;
})
let arr = Object();
for (var sortIndex in aa) {
     arr[aa[sortIndex]] = aaa[aa[sortIndex]]
}
console.log(arr);




方法2:
使用 Object.values(aaa).sort

let aaa = {"2_4":{"cpu":2,"ram":4},"2_16":{"cpu":2,"ram":16},"2_12":{"cpu":2,"ram":12},"2_8":{"cpu":2,"ram":8}}
let aa = Object.values(aaa).sort((a,b)=>{
    return a["cpu"]==b["cpu"]?a["ram"]-b["ram"]:a["cpu"]-b["cpu"]
})
console.log(aa);

 

...全文
319 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-编程语言 发布问题, 以便更快地解决您的疑问

6

社区成员

发帖
与我相关
我的任务
社区描述
好文章,让读者一看就懂。 1. 写,让人一看就懂得好文章。 2. 文章遵循两个规范:标题规范,内容规范 3. 文章遵循三个明白:学明白,写明白,看明白。看不明白就下台
pythonjava后端 个人社区 湖北省·武汉市
社区管理员
  • GokuCode
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

1.现在文章抄袭严重,标题党,软色情的问题日益突出,绝大部分文章说不明白问题,所以特此形成一个原创的原理社区用来撰写一看就懂的文章。
2.希望建立一个优秀的原理文章社区主要有以下几点要求
(1)一看标题就知道讲什么的
(2)一看就明白,看不明白就下台
(3)文章遵循两个规范:标题规范,内容规范(使用统一的模板)
(4)文章遵循三个明白:学明白,写明白,看明白

PS:有人会说,这样太严格了吧。

俗话说“无规矩不方圆”,我们制定规矩也是为了产出好文章:

对于读者:有利于快速掌握知识点提升学习效率

对于作者:有利于提升作者的写作规范,提升自己的研发能力和写作能力,只有自己讲懂的知识,记忆才深刻,才能够真正掌握。

另外:程序员越来越多,大部分都没有写注释的习惯和甚至没有学过语法规范,就拿Python 来说,有多少了解PEP8规范的?大厂中的开发规范有很多,阿里的制定了《阿里巴巴Java开发手册》,因为需要协同,所以我们需要规范,只有规范了,才能有大的进步与提升。

试试用AI创作助手写篇文章吧