使用jquery.Sort()以自定义方式进行排序
我有一份水果清单使用jquery.Sort()以自定义方式进行排序,jquery,Jquery,我有一份水果清单 var fruits = ["Banana", "Orange", "Apple", "Mango", "Pineapple"]; 我想使用jQuery.sort()对它们进行排序,方法是给出一组应放在第一位的值: var showFirst = ["Banana", "Apple", "Orange"] 其余的水果应按特定顺序添加到末尾 我可以使用fruits.sort()进行此操作并使其看起来像这样吗 fruits.sort(function (a, b) {
var fruits = ["Banana", "Orange", "Apple", "Mango", "Pineapple"];
我想使用jQuery.sort()
对它们进行排序,方法是给出一组应放在第一位的值:
var showFirst = ["Banana", "Apple", "Orange"]
其余的水果应按特定顺序添加到末尾
我可以使用fruits.sort()
进行此操作并使其看起来像这样吗
fruits.sort(function (a, b) {
var customOrder = ["Banana", "Apple", "Orange"]
{
return ?;
};
});
结果应该是:
水果=[“香蕉”、“苹果”、“橘子”、“芒果”、“菠萝”]代码>如果你说,前三个之后的任何订单,那么你可以这样做:
function sort(arr) {
// Always show these first.
var showFirst = ["Banana", "Apple", "Orange"];
// Create a return variable.
var finalArray = [];
// Loop through the showFirst to add the array elements if present.
$.each(showFirst, function (i, v) {
if ($.inArray(v, arr)) {
// Push this to the final in the same order.
finalArray.push(v);
// Remove it from the original array.
arr[i] = undefined;
}
});
// After this add the rest.
$.each(arr, function (i, v) {
if (typeof v != "undefined")
finalArray.push(v);
});
// Return the final array.
return finalArray;
}
因此,上面的代码都有完整的文档记录。使用sort,您可以简单地将indexOfa
与b
进行比较,但您必须单独检查-1。通过反转showfirst数组,可以直接使用排序:
var fruits = ["Banana", "Orange", "Apple", "Mango", "Pineapple"];
var showFirst = ["Banana", "Apple", "Orange"];
var sorter = showFirst.reverse();
fruits.sort(function (a, b) {
return sorter.indexOf(b) - sorter.indexOf(a);
});
如果在新列表中,“香蕉”、“苹果”、“橘子”中的一个不存在怎么办?结果是什么?如果你所需要的唯一的“排序顺序”是你提到的三个项目,为什么要考虑使用“排序”?这几乎是我所需要的!唯一的一点是,当我在数组中有多个“香蕉”值时,我希望它们都显示在数组的开头。做了一个快速测试,似乎有效:除非我误解了意图?你是对的。它确实将所有showFirst值放在了开头。非常感谢。