gpt4 book ai didi

javascript - 如何使 array() 遵循对元素排序的规则

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:39:26 25 4
gpt4 key购买 nike

数组可以有不同的大小,但最多可以包含以下元素:

DE/FR/IT/EN/RM

一些可能的数组可能是:

DE/FR/IT/EN/RM,

IT/EN/RM,

DE/RM

如何使这样的数组遵循排序规则?意思是我怎样才能使该数组始终按照以下顺序自行排序:DE/FR/IT/EN/RM

我试过这样的东西,但由于不是 js 编码器,我无法理解它:

function{
.....
....
...
list.sort(compareList());
...
..
.
}

function compareList() {
var ruleList = new Array();
ruleList.push("DE","FR","IT","EN","RM");


}

例如

包含 3 个元素的输入数组:RM、DE、EN

排序后输出:DE,EN,RM

或者例如

输入最多 5 个元素:FR,DE,EN,RM,IT

输出:DE,FR,IT,EN,RM

最佳答案

您可以采用所需顺序的对象和未知值的默认值,并按值的增量排序。未知项排序到数组末尾。

function compareList() {
var order = { DE: 1, FR: 2, IT: 3, EN: 4, RM: 5, default: Infinity };
return (a, b) => (order[a] || order.default) - (order[b] || order.default);
}

console.log(['RM', 'DE', 'EN'].sort(compareList())); // DE EN RM
console.log(['FR', 'DE', 'EN', 'RM', 'IT'].sort(compareList())); // DE FR IT EN RM
.as-console-wrapper { max-height: 100% !important; top: 0; }

为了保留第一个元素,你可以给那个值一个很大的负值来排序。这只有在事先知道数组的情况下才有效,因为在稍后的排序中,没有关于索引的信息。

const
keepFirst = (array, sort) => {
var order = array.reduce((r, v, i) => (r[v] = i + 1, r), { default: Infinity });
order[array[0]] = -Infinity;
return array.sort((a, b) => (order[a] || order.default) - (order[b] || order.default));
},
order = ['DE', 'FR', 'IT', 'EN', 'RM'];

console.log(keepFirst(['RM', 'DE', 'EN'], order).join(' ')); // RM DE EN
console.log(keepFirst(['FR', 'DE', 'EN', 'RM', 'IT'], order).join(' ')); // FR DE IT EN RM

关于javascript - 如何使 array() 遵循对元素排序的规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53060771/

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