通过另一个数组中包含的对象属性对Javascript数组进行排序

Joh*_*ean 1 javascript arrays sorting

我的第一个数组看起来像这样:

[
    {entityId: 1, name: 'Total sales'},
    {entityId: 2, name: 'Total customers'},
    {entityId: 3, name: 'Reach'}
]
Run Code Online (Sandbox Code Playgroud)

我有第二个存储entityIds的数组,我需要使用第二个数组的值对第一个数组进行排序.所以,如果我的第二个数组看起来像这样:

[1, 3, 2]
Run Code Online (Sandbox Code Playgroud)

那么我的第一个数组应该像这样排序:

[
    {entityId: 1, name: 'Total sales'},
    {entityId: 3, name: 'Reach'},
    {entityId: 2, name: 'Total customers'}
]
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过使用sort我自己的回调方法对基于对象属性的数组进行排序:

array.sort(function(a, b) {
    // ... sorting logic ...
});
Run Code Online (Sandbox Code Playgroud)

然而,我正在努力解决排序逻辑如何遵循第二个数组强加的排序规则,而不是仅仅比较两个相邻元素.

Ami*_*ich 8

用途Array.prototype.indexOf:

var arr = [
    {entityId: 1, name: 'Total sales'},
    {entityId: 2, name: 'Total customers'},
    {entityId: 3, name: 'Reach'}
];

var indArr = [3, 1, 2];

arr.sort(function(a, b) {
    return indArr.indexOf(a.entityId) - indArr.indexOf(b.entityId);
});

console.log(arr);
Run Code Online (Sandbox Code Playgroud)

JSFIDDLE.