JavaScript中一个对象数组按照另一个数组排序

需求:排序

  1. const arr1 = [33, 11, 55, 22, 66];
  2. const arr2 = [{age: 55}, {age: 22}, {age: 11}, {age: 66}, {age: 33}]
  3. 数组arr2中每项都是一个对象,对象中age属性 === 数组arr1中的项
  4. 将arr2数组根据对象的age值在arr1中的位置排序, 排序后的结果为 `const arr2 = [ {age: 33},{age: 11}, {age: 55}, {age: 22}, {age: 66}]

步骤:

  • 方法1(需求已知根据对象的age排序)

     const arr1 = [33, 11, 55, 22, 66]; const arr2 = [{age: 55}, {age: 22}, {age: 11}, {age: 66}, {age: 33}]console.log('排序前arr2 => ', arr2) // 排序 arr2arr2.sort((prev, next) => {const p = arr1.indexOf(prev.age)const n = arr1.indexOf(next.age)return p - n})// 排序 arr2(简写)arr2.sort((prev, next) => {return arr1.indexOf(prev.age) - arr1.indexOf(next.age)})console.log('排序后arr2 => ', arr2)console.log('     arr1 => ', arr1)

  • 方法2 (需求未知需要根据对象的哪个属性排序)

      const ageArr = [33, 11, 55, 22, 66]; const moneyArr = [5000, 3000, 6000, 2000, 9000]const objArr = [{age: 55, money: 6000},{age: 22, money: 3000},{age: 11, money: 2000},{age: 66, money: 9000},{age: 33, money: 5000}]// 1. 将sort排序函数抽离出来/*** @description 数组sort方法的 sortby(规定排序顺序)* @param {String} propName 属性名(数组排序基于的属性)* @param {Array} referArr 参照数组(objArr数组排序的参照数组)*/const sortFunc = (propName, referArr) => {return (prev, next) => {return referArr.indexOf(prev[propName]) - referArr.indexOf(next[propName])}}// 2. 排序objArrobjArr.sort(sortFunc('age', ageArr))console.log('按age属性排序后的objArr\n', objArr)objArr.sort(sortFunc('money', moneyArr))console.log('按money属性排序后的objArr\n', objArr)

转载于:https://www.cnblogs.com/guojbing/p/10872867.html

JavaScript中一个对象数组按照另一个数组排序相关推荐

  1. 遍历JavaScript中的数组

    在Java中,可以使用for循环遍历数组中的对象,如下所示: String[] myStringArray = {"Hello", "World"}; for ...

  2. JavaScript中的数组创建

    JavaScript中的数组创建 本文转载自:众成翻译 译者:loveky 链接:http://www.zcfy.cc/article/713 原文:http://rainsoft.io/power- ...

  3. 如何在JavaScript中比较数组?

    本文翻译自:How to compare arrays in JavaScript? I'd like to compare two arrays... ideally, efficiently. 我 ...

  4. 如何检查变量是否是JavaScript中的数组? [重复]

    本文翻译自:How do you check if a variable is an array in JavaScript? [duplicate] This question already ha ...

  5. javascript字典中添加数组_如何在JavaScript中使用数组方法:Mutator方法

    JavaScript中的数组由元素列表组成.JavaScript有许多有用的内置方法来处理数组.修改原始数组的方法称为mutator方法,返回新值或表示的方法称为accessor方法.在本教程中,我们 ...

  6. JavaScript中的数组和字符串

    知识内容: 1.JavaScript中的数组 2.JavaScript中的字符串 一.JavaScript中的数组 1.JavaScript中的数组是什么 数组指的是数据的有序列表,每种语言基本上都有 ...

  7. JavaScript中一个对象如何继承另外一个对象

    如题,JavaScript中一个对象a如何继承另外一个对象b.即将b中的属性和方法复制到a中去. 面试中遇到了这个问题,当时脑子里的想法是: 1.除了循环遍历复制,还能怎样 2.javascript中 ...

  8. 遍历 in java_[Java教程]JavaScript中遍历数组 最好不要使用 for in 遍历

    [Java教程]JavaScript中遍历数组 最好不要使用 for in 遍历 0 2017-01-14 00:01:52 先看一段代码1 2 3 4 5 Document 6 7 8 9 21 2 ...

  9. JavaScript中字符串数组赋值失败,不是每个字符串,却是字符。

    我的处女作<Canvas系列教程>在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作. 教程介绍.教程目录等能在README里查阅. 传送门:https: ...

最新文章

  1. redmine的知识库插件-Redmine Knowledgebase plugin,程序员们的知识需要管理
  2. Windows Live Windows Phone 7
  3. 软件测试组织与管理思维导图
  4. JDBC告警系列(一)The server time zone value 'ÖÐ' is unrecognized or represents more than one time zone....
  5. Python 技术篇 - 修改源码解决中文主机名导致的flask、socket服务起不来问题: ‘utf-8‘ codec can‘t decode byte 0xc0 in position...
  6. centos7日志文件_Shell 脚本自动监控重启 httpd 服务并记录日志
  7. F. Cheap Robot(kruskal 重构树)
  8. sqlserver连接字符串_10分钟使用EF Core连接MSSQL数据库
  9. 【Elasticsearch】实施现代电子商务搜索
  10. php webwxuploadmedia_PHP Web实现文件上传下载功能实例解析
  11. 吴恩达创建deeplearning.ai讲授AI课程 ,向全世界普及深度学习知识
  12. 单片机c语言赚钱,单片机C语言程序设计实训100例(从初级入手).pdf
  13. 最佳的46+14款免费软件
  14. 软件调试是鸡肋?你的认知决定你的层次!
  15. 彩信数据库mmssms.db
  16. 《认知天性》这本书对我的启发,以及我在日常中的应用
  17. MATLAB颜色图中,小于某个值的所有点设为白色
  18. 考研[*数据结构*]学习笔记汇总(全)
  19. JavaScript拖拽函数
  20. 收集到的几篇看雪学院文章

热门文章

  1. tomcat7.0支持什么版本的jdk_恭喜你喜提JDK,那你知道JDK是什么吗?先来看看吧
  2. linux 指令学习总结~~~
  3. html正则判断全数字,javascript如何判断是不是数字?
  4. mysql --max_allowed_packet=32m,如何修改MySQL-max_allowed_packet
  5. python内建函数测试对象身份_Python学习笔记 03 Python对象
  6. jmeter进程和线程的区别_一文搞懂进程和线程的区别
  7. 微软符号服务器 2020年_微软介绍了2020年后它将如何淘汰Edge中的Flash支持
  8. matlab weibpdf函数,matlab建模常用函数
  9. numpy python 兼容_Python 2和3之间的numpy数组的不兼容性
  10. php设置表单为整数,PHP中如何判断FROM表单提交的数字是否为整数?