一直没弄明白 a[value]这种访问对象属性的方式……今天懂了

  1. 可以通过点语法来存取,比如obj.name指的是访问obj对象上的name属性,但是此时对象上要有这个name属性,否则访问到的就是undefined
  2. 也可以使用中括号来存取属性,这两种存取属性的方式没有区别,使用中括号要在括号内使用属性名的字符串形式,就是可以通过变量访问属性。
    如果属性名中包含可以会导致语法错误的字符或者包含关键字、保留字时使用中括号语法。比如 first name中间有空格,不能使用点语法。
          var  obj={name:'test'}let propertyName='name'console.log(obj[propertyName]);//testconsole.log(obj.propertyName);//undefined


  • sort用法

默认情况下,sort()会按照升序重新排列数组元素,sort()会在每一项上调用String()转型函数,然后比较字符串来决定顺序,即使数组的元素都是数值,也会先把数组转换为字符串再比较排序。

       let nums=[0,1,5,10,15]console.log(nums.sort());

sort排序后的结果:根据字符串比较规则排序的……可不是数字

其中字符串105比较,这在多数情况下都不是最合适的,sort()方法可以接收一个比较函数,用于判断哪个值应该排在前面。

比较函数规则:

  1. 如果第一个参数应该排在第二个参数前面,就返回负值
  2. 如果两个参数相等,就返回0
  3. 如果第一个参数应该排在二个参数后面,就返回正值
        function compare(value1,value2){if(value1<value2){return 1}else if(value1>value2){return -1}else{return 0}}let values=[0,23,1,4,2]// sort方法传入比较函数,数组中的数值在排序后保持了正确的顺序console.log(values.sort(compare));// [23, 4, 2, 1, 0]//使用箭头函数的形式简写console.log(values.sort((a,b)=>a<b? 1:a>b?-1:0));// [23, 4, 2, 1, 0]//都是数值的时候可以更简洁点console.log(values.sort((a,b)=>b-a));


1.按照对象中的某个属性排序

  • value1此时表示的是数组中的每一个对象{},value1[property]是通过变量访问属性。
  function sortBy(property){return function(value1,value2){let a=value1[property]let b=value2[property]return a < b ? 1:a > b? -1 : 0}}

按照age排序:

    let value=[{age:22},{age:88},{age:33}]console.log(value.sort(sortBy('age')));


2.再加个是否升序排序,默认是升序。第二个参数不写,函数接收的ascundefined

        function sortBy(property, asc) {//默认升序,不能写在闭包里面,写在闭包里面是无效的……asc没反应就if (asc==undefined) {asc = -1} else {asc=asc ? -1 : 1}return function (value1, value2) {let a = value1[property]let b = value2[property]return a < b ? asc : a > b ? asc*-1 : 0}}
        console.log(value.sort(sortBy('age',true)));

3.更简洁方法

  1. 如果数组的元素是数值,或者是其valueOf方法返回数值的对象如Date对象,比较函数可以写的更简单,可以直接用第二个值减去第一个值。
  2. 比较函数就是要返回小于00和大于0的数值,减法操作完全可以满足要求。


对象按照属性排序:

  • 常规
 function sortBy(property){return function(value1,value2){let a=value1[property]let b=value2[property]return b-a}}
  • 是否升序
        function sortBy1(property,asc){return function (value1, value2) {let a = value1[property]let b = value2[property]// 默认升序if(asc==undefined){return a-b}else{return asc? a-b:b-a}}}
        // 第二种更简洁的方法console.log(value.sort(sortBy1('age',true)));

JavaScript中将对象按照某个属性排序相关推荐

  1. java和python根据对象某一个属性排序

    最近在学习java,目前看到java如何对一个对象列表进行排序. 我有一个Member类: public Member(String name,Calendar birthday,Sex gender ...

  2. javascript删除对象上的属性

    任务 删除 age 属性 let obj = { name: 'xiaoming', age: 11, id: 2} 解决 方法1: 对象的解构 let {age, ...rest} = obj co ...

  3. 【Demo】IOS中将对象数组按照时间戳排序

    将对象按照时间戳排序,这里典型的一个例子是登录账户的排序:本地客户端可能保存了多个账户信息,在登录窗口用户可以选择已经登陆过的账户直接登录,现在的需求是要时刻让最近登陆过的账户排在前面,对于每个账户, ...

  4. javascript 数组对象根据相同属性值{key:value}合并两个对象

    前言 js 数组对象的合并,方便自己后续使用与学习,废话少说,这段代码的功能就是根据某个相同的value值合并两个数组对象 比如:根据相同的hotelId来合并 一 , 数组对象根据相同属性值合并两个 ...

  5. python 按照对象某一属性排序

    前言: 工作中经常需要用到排序,单纯的数字排序还好说,但是有时候要按照对象的某一属性对对象进行排序,这时候会稍微麻烦点,不过 python 中有现成的方法解决这种窘境. 1.调用 list 排序方法 ...

  6. javascript:document对象的常用属性和方法

    属性 意义 anchors[]               anchors对象数组,每一个都代表文档中出现的一个锚地 applets[]                applet对象数组,代表文档中 ...

  7. ArrayList如何对某个对象的日期属性排序?

    大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 现实是:2021年10月24日09:52:35,祝大家节日快乐呐! 今天在项目过程中,遇到了个需求,需要对某个对象中的日期部分进行排序,也是解决了好 ...

  8. java json 对象如何对属性排序_Java对象集合、对象数组如何排序?你需要知道这两种方式...

    一.引子 在比较Java对象时,正常情况下,我们只能使用==或!=进行比较,而不能使用>或者<这样的运算符. 那么问题来了,开发过程中我们经常要对多个对象排序,排序必然需要比较,那么如何实 ...

  9. JavaScript删除对象的某个属性的方法

    1.delete delete是删除对象的属性没有任何剩菜,剩下的唯一真正的方法,但它的工作比其"替代"设置慢100倍 object[key] = undefined var my ...

最新文章

  1. Delphi xe7 FireMonkey / Mobile (Android, iOS)生成 QR Code完整实例
  2. CISCO设备部分型号IOS下载
  3. 智能车大赛AI视觉组参考答案
  4. 更改sybase服务名
  5. Android 大牛开发者博客列表
  6. 分布式实时计算—实时数据质量如何保障?
  7. java实现遍历树形菜单方法——设计思路【含源代码】
  8. 感谢相信你鼓励你的人
  9. 傅里叶级数的数学推导
  10. Docker学习文档之三 其他相关-生产环境
  11. 8.1、Spring Boot 属性配置
  12. 具体数学-第7课(取整基础)
  13. GARFIELD@12-12-2004
  14. 山东大学软件学院2022数据化企业期末复习总结
  15. 卡巴斯基2006以上版本与金山词霸 的冲突
  16. word大纲视图 标题格式设置方式
  17. 张家界航空工业职业学院计算机,张家界航空工业职业技术学院2021年招生代码...
  18. 解决大多数pip install出现Could not install packages due to an EnvironmentError错误
  19. 《Scrum实战》第2次课【取得大家的支持】课后作业汇总
  20. Swift 3DTouch开发 自定义ShortcutItems

热门文章

  1. 一文看懂:零代码平台是什么?怎么选?
  2. NR PUSCH(七) 相干传输
  3. Linux获取登录凭证总结
  4. python爬虫:批量抓取代理ip,进行验证,抓取豆瓣网站影视信息
  5. 信息收集后的数据处理小技巧
  6. 1989-字符串分割
  7. 将sd卡格式化为ext4格式并挂载
  8. 口碑预点单正餐先后付承接端哪些版本支持?
  9. 如何从R和Gmail发送电子邮件
  10. Ruby中Time的常用函数