JS中对象数组按照对象的某个属性进行排序

如何按照指定属性排序对象数组 在工作场景中会出现对对象数组按照某一对象属性排序的情况,例如对于下面的对象数组按照对象age从小到大排序。 let arr = [ {name: 'code', age: 18}, {name: 'jack', age: 27}, {name: 'fake', age: 13}, {name: 'rade', age: 38}, {name: 'bob', age: 25} ] 排序的核心算法有很多,一些算法详情可见笔者的另一篇博客经典十大... 阅读详情

目录

一、总结

一句话总结:

js中的数组中的对象排序很简单,根据对象的属性指定排序规则即可,如果出问题就仔细检查一下中间数据

functon sortRule(a,b) {
    return a.value- b.value;
}

1、sort的排序函数中,规定属性进行排序?

可以在原数组排序函数的基础上再套一个函数来传字段参数,原排序函数作为这个函数的返回值返回

function sortBy(props) {
    return function(a,b) {
        return a[props] - b[props];
    }
}
arr1.sort(sortBy("value"));

2、字段1相等的时候,按照字段2的规则排序?

直接在规则中写字段1相等时字段2怎样,字段1不相等时怎样

function sortBy(field1,field2) {
    return function(a,b) {
        if(a.field1 == b.field1) return a.field2 - b.field2;
        return a.field1 - b.field1;
    }
}
arr1.sort(sortBy("value","score"));

回到顶部

二、JS中对于对象数组按照对象的某个属性进行排序

转自或参考:JS中对于对象数组按照对象的某个属性进行排序
https://www.cnblogs.com/iamlhr/p/11459653.html">JS中对于对象数组按照对象的某个属性进行排序

1.对象数组

我们现在有一组对象,包含“name,value”等属性,实现按照value对这些对象进行排序。

series:[
   {name:'西安市',value:100},
   {name:'威阳市',value:120},
   {name:'延安市',value:80},
   {name:'南洛市',value:90},
   {name:'榆林市',value:130}
]

2.排序方法

实际上在于数组对象的sort方法。

Array.sort(fun)

fun是一个函数,排序根据这个函数返回值来进行判断,如果返回值小于0表示两个元素不需要交换位置,1表示要用交互位置,0表示相等,实际上<=0等效。

sort方法有两个注意点:

  1. 会操作原始数组,经过操作后原始数组发生变化
  2. 默认排序按照字符编码排序,例如,我们有下面的一个例子:
var arr1 = [14,23,11,6,87,67];
arr1.sort();// [11,14,23,6,67,87] 按字符而非数值排序

想要完成值比较排序,必须传入sort参数(函数)进行规制制定:

function sortRule(a,b) {
  return a-b; // 如果a>=b,返回自然数,不用交换位置
}
arr1.sort(sortRule);

但是,如果遇到每个元素并非是数值,而是对象,那应该怎么去处理呢?其实道理是一样的,只不过我们要在规制函数中重新编写一个适合对象的规制:

functon sortRule(a,b) {
    return a.value- b.value;
}

当然,这样写只使用对象的value属性,这是我们在明确知道要进行排序的对象数组的情况,倘若对象数组元素不存在value属性,那就会报错了,因此,你在撰写自己的规则时,应该适用其他属性规则判断。

假如我们现在不规定按照哪一个属性排序,比如除了value属性,我们还有其他的属性,希望能重复用这个算法,应该怎么办呢?

function sortBy(props) {
    return function(a,b) {
        return a[props] - b[props];
    }
}
arr1.sort(sortBy("value"));

没错,核心的代码就这么简单了。在这种想法下面,我们还可以做一个设想:假如value相等的情况下,我们是否可以其他属性的大小排序输出?

function sortBy(field1,field2) {
    return function(a,b) {
        if(a.field1 == b.field1) return a.field2 - b.field2;
        return a.field1 - b.field1;
    }
}
arr1.sort(sortBy("value","score"));

没错,其实也就这么简单,甚至可以使用argments来获取更多的参数,用以传入更多的字段作为判断条件。

参考原文:javascript中对一个对象数组按照对象某个属性进行排序_唐霜的博客

JS实现根据数组对象的某一属性排序操作示例 主要介绍了JS实现根据数组对象的某一属性排序操作,涉及javascript针对json数组的遍历、比较、排序等相关操作技巧,需要的朋友可以参考下 立即下载

相关推荐

避坑指南:英飞凌TC3XX的MCMCAN初始化常见错误及解决方法

本文针对英飞凌TC3XX系列MCU的MCMCAN模块初始化难题,深入剖析了寄存器配置时序、总线监控模式误用、中断映射错误及Message RAM地址冲突四大常见陷阱。通过实战代码示例和诊断流程,提供了清晰的避坑指南和解决方案,帮助嵌入式开发者高效解决CAN FD通信故障,确保汽车电子与工业控制项目的稳定运行。

weixin_29193259的博客 244

JS实现根据数组对象的某一属性排序

根据数组中对象的某一属性排序 var newArray = [{ name: "aaa", value: 0 }, { name: "ddd", value: 3 }, { name: "bbb", value: 1 }, { name: "eee", value: 4 }, { name: "ccc", value: 2 }]; function co...

花生福的博客 1109

高德地图可视化入门:零基础用Python+高德API打造你的第一个热力图

本文详细介绍了如何使用Python和高德地图API从零构建商业级热力图。通过环境配置、地理编码、数据清洗到最终可视化展示的全流程指南,帮助开发者快速掌握地图可视化技术,特别适合展示商圈人流、疫情热点等地理分布数据。

weixin_29053067的博客 303

js 对象数组根据对象的某一个属性值来进行数据排序

js 对象数组根据对象的某一个属性值来进行数据排序。示例: 1、根据id值 从小到大排序 //模拟数据 var list = [{"id" : 5, "name": "小明", "age" : 5}, {"id" : 2, "name": "小红", "age" : 12}, {"id" : 3, "name": "小花", "age" : 8}, {"id" : 1, "name": "小白", "age" :24}, {"id" : 4, "name": "小黑",

zcc的博客 1万+

【STM32】从零构建串口IAP框架:BootLoader与App双向跳转实战解析

本文详细解析了STM32串口IAP框架的构建,重点阐述了BootLoader与App双向跳转的实战原理与实现步骤。内容涵盖Flash分区规划、中断向量表重定向、通信协议设计及固件升级流程,并针对跳转失败、程序跑飞等常见问题提供了解决方案,帮助开发者掌握产品级远程升级的核心技术。

wind6的博客 838

告别反复刷写:用英飞凌XCP Overlay功能实现ECU标定与诊断的‘热更新’

本文详细介绍了英飞凌XCP Overlay功能在ECU标定与诊断中的应用,实现参数的'热更新',避免反复刷写Flash。通过地址重映射技术,将标定变量从Flash重定向到RAM,显著提升工作效率并保护Flash寿命。文章涵盖技术原理、工程实践、功能安全考量及高级应用场景,为汽车电子工程师提供完整解决方案。

weixin_30689307的博客 524

js根据数组中对象的某一个属性值进行排序

var personArr = [ {name: '小黑球', age: '19'}, {name: '小太阳', age: '18'}, {name: '乐乐', age: '20'} ] function sortArr(attr) { return function(a,b) { return a[attr] - b[attr] } } console.log(personArr.sort(so.

前端程序猿的博客 1225

OpenClaw:深度学习驱动的智能编程工具实战解析

智能编程工具通过深度学习技术革新传统开发流程,其核心在于代码语义理解与实时协作能力。这类工具采用AI代码补全、错误预测等技术,显著降低开发者认知负荷,尤其适用于复杂业务逻辑开发和遗留系统维护场景。以OpenClaw为例,其智能填充和上下文感知功能可提升40%编码效率,减少65%调试时间。关键技术实现包含自然语言处理、代码静态分析等,在金融科技、电商系统等领域具有广泛应用前景。热词提示:代码理解引擎、智能工作流整合展现了当前AI辅助开发的最新趋势。

chubaisheng8627的博客 320

js中对一个对象数组按照对象某个属性进行排序

javascript中对一个对象数组按照对象某个属性进行排序 我们现在有一组“学生”对象,包含“名字,年龄,分数”等属性,现在要求一个算法,把这些对象放在一个数组里,可以实现按照年龄或者分数对这些对象进行排序。 var sdts = [ {name:"小明",age:12,score:100}, {name:"小红",age:13,score:80}, {name:"小花"...

缘灭_xy的博客 5946

ansys license许可证问题:Ansys License Manager Release 2024 R1...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 5367

Midscene.js(1):Chrome 插件实战之基于 AI 驱动 WEB UI 自动化测试「喂饭教程」

Midscene.js 是一款开源的AI驱动UI自动化工具,支持自然语言交互、数据提取、断言验证等多种功能。自然语言交互。本文将以 Midscene.js Chrome 插件为例,带你从零上手,体验如何用最简单的方式实现高效、智能的UI自动化测试。

blues_C的博客 4404

js将数组对象中按照对象的某一个属性进行排序

1.对象数组 我们现在有一组对象,包含“name,value”等属性,实现按照value对这些对象进行排序。 series:[ {name:'西安市',value:100}, {name:'威阳市',value:120}, {name:'延安市',value:80}, {name:'南洛市',value:90}, {name:'榆林市',value:130} ] 2.排序方法 实际上在于数组对象的sort方法。 Array.sort(fun) fun是一个函数,排序根据这个

yun的博客 1万+

YOLOv11魔改高效涨点 | 注意力篇 | SimAM注意力:基于神经科学的 3D 注意力机制,三维权重的暴力美学,无参数也能暴力涨点?代码极简,彻底疯狂!!!

在本文中,我们为卷积神经网络(ConvNets)提出了一个概念简单但非常有效的注意力模块。与现有的通道注意力(Channel-wise)和空间注意力(Spatial-wise)模块不同,我们的模块在不向原始网络添加参数的情况下,推断出层中特征图的 3D 注意力权重。具体来说,我们基于一些知名的神经科学理论,提出优化一个能量函数来寻找每个神经元的重要性。我们进一步推导出了该能量函数的快速闭式解,并表明该解可以用不到十行代码实现。

猫天意的博客 248

php 数组对象某值排序,javascript中对一个对象数组按照对象某个属性进行排序

在javascript中,对象和数组是两种不同的类型,这和php中的数组概念不同。在javascript中,也有一些精妙的算法,用来对一些对象进行排序。我在面试迅雷的时候,也拿到一道题,当时做题的时候考虑到时间,没有去仔细研究,回来后再读了一些方法,就知道真正的考点在哪里了。我们现在有一组“学生”对象,包含“名字,年龄”等属性,现在要求一个算法,把这些对象放在一个数组里,可以实现按照年龄对这些对象...

weixin_39798031的博客 213

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JS中对于对象数组按照对象的某个属性进行排序

1.对象数组 我们现在有一组对象,包含“name,value”等属性,实现按照value对这些对象进行排序。 series:[ {name:'西安市',value:100}, {name:'威阳市',value:120}, {name:'延安市',value:80}, {name:'南洛市',value:90}, {name:'榆林市',value:130}] ...

weixin_30326741的博客 684

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

javascript中对一个对象数组按照对象某个属性进行排序

在javascript中,对象和数组是两种不同的类型,这和php中的数组概念不同。在javascript中,也有一些精妙的算法,用来对一些对象进行排序。我在面试迅雷的时候,也拿到一道题,当时做题的时候考虑到时间,没有去仔细研究,回来后再读了一些方法,就知道真正的考点在哪里了。我们现在有一组“学生”对象,包含“名字,年龄”等属性,现在要求一个算法,把这些对象放在一个数组里,可以实现按照年龄对这些对象...

彪锅锅来啦 561

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【JS】sort方法的基本使用与双重、多重排序:对象数组按照多个对象属性进行排序

【代码】【JS】sort方法的基本使用与双重、多重排序:对象数组按照多个对象属性进行排序。

m0_61049675的博客 1600

js 按给定数组的顺序给数组排序_JavaScript对json对象数组排序(按照某个属性升降序排列)...

在做报表的时候,在web前端获取到的数据是一个对象数组,由于后端SQL的复杂性不方便按照某个字段排序,这时就可以派上用场了,在前端用js排序。例如 :事业部销售​增比。源代码:var data = [{name: "海外事业部",value: 0.58}, {name: "内销",value: 0.36}, {name: "互联网中心",value: 0.78}];//定义一个比较器--降序排列f...

weixin_39668898的博客 190

js数组按照对象中属性排序

按照数组中对象的属性进行排序 var releaseSort = [ {id:123,sort:1}, {id:124,sort:2}, {id:125,sort:3} ]; function compare (property) { return function (a, b) { var value1 = a[property]; var value2 = b[property];

weixin_45483749的博客 308

js实现按照数组中某个对象的属性值排序

var array = [ {name:"小明",age:12}, {name:"小红",age:13}, {name:"小花",age:11} ] function compare(property) { return function (a, b) { return a[property] - b[property]; }; } array.sor...

wei_dan1129的博客 308

Javascript对数组内的对象元素按照特定属性进行排序

对于非对象元素的数组进行排序我们有sort()方法: let x = ['a','b','c','ab','ef','good'] x.sort() ["a", "ab", "b", "c", "ef", "good"] let y = [1,2,435,67,34,2,675,89,34] y.sort() [1, 2, 2, 34, 34, 435, 67, 675, 89] 对对象元素的...

Avaiting的博客 555
上一篇: 禁用F12,禁用右键触发方法,禁止选中网页上的内容,监听文本复制,监听浏览器窗口变化
下一篇: fatal: unable to access ‘https://github.com/tujindong/tuma_blog.git/‘: SSL certificate problem: unab
Thomas AlvaEdison
博客等级 码龄6年 344粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值