我有一个数组,里面有这样的数据

arr1 = [
{mood: "good", name: "Jake"},
{mood: "good", name: "Jill"},
{mood: "good", name: "Jack"}
]

和另一个数组

arr2 = [
{number: 2, name: "Jake"},
{number: 1, name: "Jill"},
{number: 3, name: "Jack"}
]

我希望使用数组2中的数字对数组1进行排序.因此,基本上我需要使用过滤器将名称从arr1匹配到arr2,然后从结果数组中获取数字并进行排序.

我怎么才能把这件事做完?

arr1.sort((a: any, b: any) => arr1.filter((item: { name: string; }) => item.name == arr2[i].name));

我完全迷失了方向,以至于我可能没有问到一个合适的问题!

推荐答案

您可以简单地使用一个对象作为名称的顺序,并获取用于排序的值.

const
    arr1 = [{ mood: "good", name: "Jake" }, { mood: "good", name: "Jill" }, { mood: "good", name: "Jack" }],
    arr2 = [{ number: 2, name: "Jake" }, { number: 1, name: "Jill" }, { number: 3, name: "Jack" }],
    order = Object.fromEntries(arr2.map(({ name, number }) => [name, number]));

arr1.sort((a, b) => order[a.name] - order[b.name]);

console.log(arr1);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Javascript相关问答推荐

vscode扩展-webView Panel按钮不起任何作用

Redux查询多个数据库Api reducerPath&

使搜索栏更改语言

Next.js(react)使用moment或不使用日期和时间格式

如何在Obsidian dataview中创建进度条

jQuery s data()[storage object]在vanilla JavaScript中?'

为什么按钮会随浮动属性一起移动?

我怎么在JS里连续加2个骰子的和呢?

将核心模块导入另一个组件模块时存在多个主题

如何修复我的数据表,以使stateSave正常工作?

为什么我的getAsFile()方法返回空?

在不扭曲纹理的情况下在顶点着色器中旋转UV

如何使用画布在另一个内部绘制一个较小但相同的形状,同时保持恒定的边界厚度?

使用线性插值法旋转直线以查看鼠标会导致 skip

Node.js API-queryAll()中的MarkLogic数据移动

通过解构/功能组件接收props-prop验证中缺少错误"

在高位图中显示每个y轴系列的多个值

从异步操作返回对象

Plotly.js栏为x轴栏添加辅助文本

MAT-TREE更多文本边框对齐问题