gpt4 book ai didi

javascript - 按首选顺序对数组进行排序

转载 作者:行者123 更新时间:2023-11-29 10:51:20 25 4
gpt4 key购买 nike

我想想出一个好方法来获得如何在 javascript 中对数组进行排序的“建议”顺序。

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

['bob','david','steve','darrel','jim']

现在我只关心排序后的结果是按以下顺序开始的:

['jim','steve','david']

之后,我希望剩余的值按其原始顺序显示。

所以我希望结果是:

['jim','steve','david','bob','darrel']

我有一个正在与之通信的 API,我想在顶部的列表中显示对我来说重要的结果。之后,我希望它们按原始顺序退回。

如果这可以通过像 jQuery 这样的 javascript 框架轻松实现,我也很想听听。谢谢!

为清楚起见编辑:

我想假设我想要排序的数组中提供的值是无法保证的。

所以在原来的例子中,如果提供的是:

['bob','steve','darrel','jim']

我想按以下方式排序:

['jim','steve','david']

由于“david”不在提供的数组中,我希望结果将其排除。

Edit2 更清晰:我正在努力完成的一个实际例子:

API 将返回如下内容:

['Load Average','Memory Usage','Disk Space']

我想首先向用户呈现最重要的结果,但这些字段中的每一个可能并不总是返回。所以我希望最重要的(由用户在其他代码中确定)在可用时首先显示。

最佳答案

像这样的东西应该可以工作:

var presetOrder = ['jim','steve','david']; // needn't be hardcoded

function sortSpecial(arr) {
var result = [],
i, j;
for (i = 0; i < presetOrder.length; i++)
while (-1 != (j = $.inArray(presetOrder[i], arr)))
result.push(arr.splice(j, 1)[0]);
return result.concat(arr);
}

var sorted = sortSpecial( ['bob','david','steve','darrel','jim'] );

我允许“特殊”值在正在处理的数组中出现不止一次,并假设只要按照 presetOrder 中定义的顺序将重复值排到最前面,就应该保留重复项

注意:我用过jQuery's $.inArray()而不是 Array.indexOf()只是因为后者在 IE9 之前不受 IE 支持,并且您已经用“jQuery”标记了您的问题。如果您不关心旧的 IE,或者如果您使用 shim,您当然可以使用 .indexOf() .

关于javascript - 按首选顺序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9628615/

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