JavaScript中一个对象数组按照另一个数组排序
JavaScript中一个对象数组按照另一个数组排序
需求:排序
const arr1 = [33, 11, 55, 22, 66];const arr2 = [{age: 55}, {age: 22}, {age: 11}, {age: 66}, {age: 33}]- 数组arr2中每项都是一个对象,对象中age属性 === 数组arr1中的项
- 将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中一个对象数组按照另一个数组排序的更多相关文章
- JavaScript中的数组详解
JavaScript中的数组 一.数组的定义 数组是值的有序集合,或者说数组都是数据的有序列表. 二.创建数组 [字面量形式] 1.空数组 var arr=[]; 2.带有元素的数组 var arr= ...
- JavaScript中对数组和数组API的认识
JavaScript中对数组和数组API的认识 一.数组概念: 数组是JavaScript中的一类特殊的对象,用一对中括号“[]”表示,用来在单个的变量中存储多个值.在数组中,每个值都有一个对应的不重 ...
- JavaScript中的数组创建
JavaScript中的数组创建 数组是一个包含了对象或原始类型的有序集合.很难想象一个不使用数组的程序会是什么样. 以下是几种操作数组的方式: 初始化数组并设置初始值 通过索引访问数组元素 添加新元 ...
- JavaScript中Array(数组) 对象
JavaScript中Array 对象 JavaScript中创建数组有两种方式 (一)使用直接量表示法: var arr4 = []; //创建一个空数组var arr5 = [20]; // 创建 ...
- 前端开发:Javascript中的数组,常用方法解析
前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...
- Javascript中判断数组的正确姿势
在 Javascript 中,如何判断一个变量是否是数组? 最好的方式是用 ES5 提供的 Array.isArray() 方法(毕竟原生的才是最屌的): var a = [0, 1, 2]; con ...
- javascript中的数组扩展(一)
javascript中的数组扩展(一) 随着学习的深入,发现需要学习的关于数组的内容也越来越多,后面将会慢慢归纳,有的是对前面的强化,有些则是关于前面的补充. 一.数组的本质 数组是按照次序排 ...
- JavaScript中对数组的操作
原文:JavaScript中对数组的操作 一:数组的使用 1.定义:JavaScript中对数组的定义有两种形式.如: .var arr = [12,3,5,8]; .var arr = new Ar ...
- JavaScript中一个对象如何继承另外一个对象
如题,JavaScript中一个对象a如何继承另外一个对象b.即将b中的属性和方法复制到a中去. 面试中遇到了这个问题,当时脑子里的想法是: 1.除了循环遍历复制,还能怎样 2.javascript中 ...
随机推荐
- SAP用户角色分配函数权限
事务码 PFCG修改角色 选择[权限缺省] 选择 RFC 输入的函数只能是允许远程连接的函数,否则不能调用和添加到角色. 完成添加.
- Python 函数和类
python作为一个面向对象的语言,也有类似java等面向对象语言相同的数据结构(class)的定义,和代码块数据结构定义"函数".为了极大可能的简化代码调用逻辑和书写规则,pyt ...
- C编程小结1
1. ‘\0’表示字符串结束符 2. 变量之间互相赋值一定要考虑他们的数据类型,要强制转换匹配上了或者进行一些处理才能赋值,同时读程序的时候也要注意这一点,否则可能看不懂.如: sData[0]=wD ...
- 【转】#define 定义别名和 typedef 声明类型的区别
下面一段程序的执行结果是: #include <stdio.h>#define CHAR2 char*int main(){ typedef char* CHAR; CHAR ...
- 不能绑定到端口号:9194原因:Cannot assign requested address: JVM_Bind
晚上将老服务器程序从win2008部署在新的云服务器win2012上,其实就是复制过去改改配置,启动时突然报不能绑定到端口号:9194原因:Cannot assign requested addres ...
- centos8 yum 安装 rabbitmq
进入/etc/yum.repos.d/ 文件夹创建rabbitmq-erlang.repo 文件内容如下[rabbitmq-erlang] name=rabbitmq-erlangbaseurl=ht ...
- android屏幕监视工具 android screen monitor使用
android screen monitor是一个非常好用的手机屏幕监视工具,可以将你的手机界面动态的显示出来,可用于项目演示. 这个工具就是其实一个jar文件,不到300KB大小,依赖jdk,并且还 ...
- [译]Vulkan教程(22)创建顶点buffer
[译]Vulkan教程(22)创建顶点buffer Vertex buffer creation 创建顶点buffer Introduction 入门 Buffers in Vulkan are re ...
- spring-db-事务
--都是之前各位大佬总结好的,我只是肤浅的汇总一下,结合我犯得错误,适合像我一样的萌新看 第一:@Transcation 引入的注解 package org.springframework.trans ...
- VMware® Workstation 15 Pro 最新版软件安装教程
VMware 15 Pro下载地址: https://pan.baidu.com/s/1ILY2PTqB-BaJMn2hbKO4CA 提取码:vebd 如有问题咨询QQ:2217084817 VMwa ...