gpt4 book ai didi

javascript - 如何使用另一个数组作为模板对数组数据进行排序?

转载 作者:行者123 更新时间:2023-11-28 18:31:34 24 4
gpt4 key购买 nike

我正在尝试根据“主”数组对动态生成的 JavaScript 数组进行排序。该主数组将用作如何对动态生成的数组进行排序的模板。然而,主阵列将来可能会添加新项目,但这些项目将手动添加。

需要排序的数组是:

var arrayToSort = ['ABCD','ABCD 123 Team','IMT_User_MNOP'];

主数组是:

var roleDef = ['IMT_User_MNOP','IMT_User_User','ABCD','ABCD 123 Team','ABCD Plans'];

我浏览了几乎所有的解决方案,但没有一个解决方案是根据项目数量不匹配的情况对一个数组进行排序以及对索引值进行排序=== 指数值。其他解决方案处理键,或根据字母对数字进行排序(或根据数字对字母进行排序)等。

我很感激有人能提供的任何帮助,即使只是为我指明正确的方向,以便我能解决这个问题。

最佳答案

我建议使用哈希表来实现所需的排序顺序,并带有默认值,而未定义的值应位于开始或结束位置。

{
"IMT_User_MNOP": 1,
"IMT_User_User": 2,
"ABCD": 3,
"ABCD 123 Team": 4,
"ABCD Plans": 5
}

var arrayToSort = ['ABCD', 'ABCD 123 Team', 'IMT_User_MNOP'],
roleDef = ['IMT_User_MNOP', 'IMT_User_User', 'ABCD', 'ABCD 123 Team', 'ABCD Plans'],
roleObj = Object.create(null);

roleDef.forEach(function (a, i) { roleObj[a] = i + 1; });

arrayToSort.sort(function (a, b) {
return (roleObj[a] || 0) - (roleObj[b] || 0);
});

console.log(arrayToSort);

关于javascript - 如何使用另一个数组作为模板对数组数据进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37884098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com