根据另一个键数组对对象数组排序 - JavaScript


假设,我们有两个类似这样的数组 −

const arr1 = ['d','a','b','c'] ;
const arr2 = [{a:1},{c:3},{d:4},{b:2}];

我们需要编写一个接受这两个数组的 JavaScript 函数。该函数应根据第一个数组的元素对第二个数组进行排序。

我们必须按照第一个数组里的元素对第二个数组的键进行排序。这将会产出以下代码 −

const output = [{d:4},{a:1},{b:2},{c:3}];

范例

以下为代码 −

const arr1 = ['d','a','b','c'] ;
const arr2 = [{a:1},{c:3},{d:4},{b:2}];
const sortArray = (arr1, arr2) => {
   arr2.sort((a, b) => {
      const aKey = Object.keys(a)[0];
      const bKey = Object.keys(b)[0];
      return arr1.indexOf(aKey) - arr1.indexOf(bKey);
   });
};
sortArray(arr1, arr2);
console.log(arr2);

输出

这将会在控制台中产生以下输出 −

[ { d: 4 }, { a: 1 }, { b: 2 }, { c: 3 } ]

更新于: 18-Sep-2020

3K+ 浏览量

开启您的 职业

完成课程即可获得认证

开始吧
广告