javascript – 将一个对象数组根据另一个数组的顺序进行排序

有一个对象数组:

const origin = [{ id: 4, name: 'name4' }, { id: 3, name: 'name3' }, { id: 9, name: 'name9' }, { id: 1, name: 'name1' }]

有另一个对象数组,需要按此数组里面的某个字段进行排序

const sortKey =  [{sortId: 3, age: '333' }, { sortId: 1,age: '111'}, { sortId: 9, age: '999' }, { sortId: 4, age: '444' }]

根据sortKey的sortId,如何将第一个对象数组(origin)与第二个对象数组的排序相匹配?
结果应该是:

const origin = [{ id: 3, name: 'name3' }, { id: 1, name: 'name1' }, { id: 9, name: 'name9' }, { id: 4, name: 'name4' }]

方法:用sort以及indexOf解决了这个问题

const result = origin.sort(function(a, b){
  return sortKey.map(s => s.sortId).indexOf(a.id) < sortKey.map(s => s.sortId).indexOf(b.id) ? -1 : 1;
});
// result: [{ id: 3, name: 'name3' }, { id: 1, name: 'name1' }, { id: 9, name: 'name9' }, { id: 4, name: 'name4' }]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,281评论 0 4
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,431评论 0 3
  • 数组总共有22种方法,本文将其分为对象继承方法、数组转换方法、栈和队列方法、数组排序方法、数组拼接方法、创建子数组...
    Sachie阅读 958评论 0 7
  • 转载:在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总...
    七色烟火阅读 3,303评论 0 3
  • 数组 知识汇总 前置知识: 数组是一个有序的数据集合,可使用数组名称和索引进行访问。 在JavaScript中数组...
    Daeeman阅读 715评论 1 8