ES6-相对于对象重新排列数组

问题描述 投票:0回答:1

我有一个类似的数组:

const my_array = [
"S T"
"O P"
"Lend"
"GT"
"CT"
"AC"
];

和一个根据其重新排序此数组的对象:

const AN_ORDER = {
  'Lend': 1,
  'C T': 2,
  'S T': 3,
  'AC': 4,
  'O P': 5
};

为此已经有解决方案//来自Lodash的键和sortBy

const new_array = keys(my_array);
return sortBy(new_array, ar => AN_ORDER[ar] || Number.MAX_SAFE_INTEGER);

这将为我提供新的数组:

["Lend", "AC", "O P", "S T", "GT", "C T"]

我尝试调查有关此用法的文档,但我不理解sortBy在此处使用第二个参数的想法。

现在我需要按以下顺序重新排列my_array的顺序:

['Lend', 'C T', 'S T', 'GT', 'AC', 'O P']

[请帮助我理解实现并提出以相同逻辑重新排序的方法。

javascript sorting ecmascript-6 lodash
1个回答
0
投票

您在第二个参数中添加了数组,在这里您可以提及回调函数或属性名称。

这是有效的解决方案

const my_array = [
"S T",
"O P",
"Lend",
"GT",
"C T",
"AC"
];

var AN_ORDER = {
  "Lend": 1,
  "C T": 2,
  "S T": 3,
  "AC": 4,
  "O P": 5
};

console.log(_.sortBy(my_array, [a => {
return (AN_ORDER[a] || Number.MAX_SAFE_INTEGER);
}]));
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.