javascript - 使用其他数组对数组对象进行排序

标签 javascript node.js lodash

无法根据给定数组对数组对象进行排序 你能帮我一下吗!!

reference link

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中放置值和优先级,然后排序,

注意:- 另外不要忘记保持搜索值和键相同类型

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)

关于javascript - 使用其他数组对数组对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58164895/

相关文章:

javascript - React v16.5.2 - 之后无条件屏幕刷新引发弹出消息

javascript 显示不同的谷歌分析

javascript - 对话框的位置不在网络浏览器的中心

Node.js如何获取mongodb中的列值

node.js - npm install 在 node_modules 中创建过多的依赖项

node.js - 使用 sendUsersMessages(javascript SDK)时,AWS Pinpoint 出现 TemplateConfiguration 错误

javascript - 如何使用 javascript Lodash 将所有对象插入另一个数组

javascript - 使用 lodash 合并 2 个数组

javascript - Lodash 的纯 JavaScript 替换 `omit()`

javascript - 在 ruby​​ on rails 4 元素中实现页面特定的 java 脚本和 CSS