javascript - 使用其他数组对数组对象进行排序
问题描述
无法根据给定的数组对数组对象进行排序,请您帮帮我!!
const data = [ {
parent_email: 'testuser@mailinator.com',
childSurName: null,
childFirstName: null,
id: 22},
{
parent_email: 'p20@mailinator.com',
childSurName: null,
childFirstName: 'Sachidanand',
id: 31},
{
parent_email: 'aa@aa.aaa',
childSurName: null,
childFirstName: null,
id: 26}];
const order = [ 31,26 ];
const sorted = data.sort((a, b) => (
order.indexOf(a.id) - order.indexOf(b.id)
));
console.log(sorted)
我需要像我的第二个数组一样的排序结果,然后是其他数据:
[ {
parent_email: 'p20@mailinator.com',
childSurName: null,
childFirstName: 'Sachidanand',
id: 31},
{
parent_email: 'aa@aa.aaa',
childSurName: null,
childFirstName: null,
id: 26}
{
parent_email: 'testuser@mailinator.com',
childSurName: null,
childFirstName: null,
id: 22},
];
但我得到以下结果,没有得到正确的排序数据:
[{
parent_email:"testuser@mailinator.com",
childSurName:null,
childFirstName:null,
id:22
},
{
parent_email:"p20@mailinator.com",
childSurName:null,
childFirstName:"Sachidanand",
id:31
},
{
parent_email:"aa@aa.aaa",
childSurName:null,
childFirstName:null,
id:26
}]
解决方案
您可以在 Map 中使用Map
andplace values along with priority
然后排序,
注意:-也不要忘记保持相同类型的搜索值和键
const data = [{parent_email: 'testuser@mailinator.com',childSurName: null,childFirstName: null,id: 22},{parent_email: 'p20@mailinator.com',childSurName: null,childFirstName: 'Sachidanand',id: 31},{parent_email: 'aa@aa.aaa',childSurName: null,childFirstName: null,id: 26}];
const order = ['31', '22'];
const mapper = new Map(order.map((v, i) => [parseInt(v), i + 1]))
const sorted = data.sort((a, b) => (
(mapper.get(a.id) || Infinity) - (mapper.get(b.id) || Infinity)
));
console.log(sorted)
推荐阅读
- html - 让 div 在真实 div 之外溢出
- kotlin - 如何在 ktor http 客户端记录请求?
- nativescript - Nativescript 5 无法在本地机器上构建新应用程序
- ios - 如何在 iOS 中更改图像的大小(不是文件的大小,不是图像视图的大小)?
- swift - 带有数组的 Swift 强引用循环
- javascript - 无法使用 WebdriverJS 访问通过原型制作的功能
- ios - iOS 上的 Google 应用程序如何知道我的 Google 帐户?
- database - 如何在 Prestashop 的 .tpl 文件中从数据库中获取更多数据
- c++ - 空基础优化子对象的地址
- python - 为什么python中“__init__”方法中的“self”是必需的?