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) // 排序 arr2
    arr2.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. 排序objArr
    objArr.sort(sortFunc('age', ageArr))
    console.log('按age属性排序后的objArr\n', objArr) objArr.sort(sortFunc('money', moneyArr))
    console.log('按money属性排序后的objArr\n', objArr)

JavaScript中一个对象数组按照另一个数组排序的更多相关文章

  1. JavaScript中的数组详解

    JavaScript中的数组 一.数组的定义 数组是值的有序集合,或者说数组都是数据的有序列表. 二.创建数组 [字面量形式] 1.空数组 var arr=[]; 2.带有元素的数组 var arr= ...

  2. JavaScript中对数组和数组API的认识

    JavaScript中对数组和数组API的认识 一.数组概念: 数组是JavaScript中的一类特殊的对象,用一对中括号“[]”表示,用来在单个的变量中存储多个值.在数组中,每个值都有一个对应的不重 ...

  3. JavaScript中的数组创建

    JavaScript中的数组创建 数组是一个包含了对象或原始类型的有序集合.很难想象一个不使用数组的程序会是什么样. 以下是几种操作数组的方式: 初始化数组并设置初始值 通过索引访问数组元素 添加新元 ...

  4. JavaScript中Array(数组) 对象

    JavaScript中Array 对象 JavaScript中创建数组有两种方式 (一)使用直接量表示法: var arr4 = []; //创建一个空数组var arr5 = [20]; // 创建 ...

  5. 前端开发:Javascript中的数组,常用方法解析

    前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...

  6. Javascript中判断数组的正确姿势

    在 Javascript 中,如何判断一个变量是否是数组? 最好的方式是用 ES5 提供的 Array.isArray() 方法(毕竟原生的才是最屌的): var a = [0, 1, 2]; con ...

  7. javascript中的数组扩展(一)

     javascript中的数组扩展(一) 随着学习的深入,发现需要学习的关于数组的内容也越来越多,后面将会慢慢归纳,有的是对前面的强化,有些则是关于前面的补充. 一.数组的本质    数组是按照次序排 ...

  8. JavaScript中对数组的操作

    原文:JavaScript中对数组的操作 一:数组的使用 1.定义:JavaScript中对数组的定义有两种形式.如: .var arr = [12,3,5,8]; .var arr = new Ar ...

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

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

随机推荐

  1. SAP用户角色分配函数权限

    事务码 PFCG修改角色 选择[权限缺省] 选择 RFC 输入的函数只能是允许远程连接的函数,否则不能调用和添加到角色. 完成添加.

  2. Python 函数和类

    python作为一个面向对象的语言,也有类似java等面向对象语言相同的数据结构(class)的定义,和代码块数据结构定义"函数".为了极大可能的简化代码调用逻辑和书写规则,pyt ...

  3. C编程小结1

    1. ‘\0’表示字符串结束符 2. 变量之间互相赋值一定要考虑他们的数据类型,要强制转换匹配上了或者进行一些处理才能赋值,同时读程序的时候也要注意这一点,否则可能看不懂.如: sData[0]=wD ...

  4. 【转】#define 定义别名和 typedef 声明类型的区别

    下面一段程序的执行结果是: #include <stdio.h>#define CHAR2 char*int main(){    typedef char* CHAR;    CHAR ...

  5. 不能绑定到端口号:9194原因:Cannot assign requested address: JVM_Bind

    晚上将老服务器程序从win2008部署在新的云服务器win2012上,其实就是复制过去改改配置,启动时突然报不能绑定到端口号:9194原因:Cannot assign requested addres ...

  6. centos8 yum 安装 rabbitmq

    进入/etc/yum.repos.d/ 文件夹创建rabbitmq-erlang.repo 文件内容如下[rabbitmq-erlang] name=rabbitmq-erlangbaseurl=ht ...

  7. android屏幕监视工具 android screen monitor使用

    android screen monitor是一个非常好用的手机屏幕监视工具,可以将你的手机界面动态的显示出来,可用于项目演示. 这个工具就是其实一个jar文件,不到300KB大小,依赖jdk,并且还 ...

  8. [译]Vulkan教程(22)创建顶点buffer

    [译]Vulkan教程(22)创建顶点buffer Vertex buffer creation 创建顶点buffer Introduction 入门 Buffers in Vulkan are re ...

  9. spring-db-事务

    --都是之前各位大佬总结好的,我只是肤浅的汇总一下,结合我犯得错误,适合像我一样的萌新看 第一:@Transcation 引入的注解 package org.springframework.trans ...

  10. VMware® Workstation 15 Pro 最新版软件安装教程

    VMware 15 Pro下载地址: https://pan.baidu.com/s/1ILY2PTqB-BaJMn2hbKO4CA 提取码:vebd 如有问题咨询QQ:2217084817 VMwa ...