繁体   English   中英

如何在Jquery中以给定的任何特定排序顺序对字符串数组进行排序

[英]How to sort an array of Strings in Jquery with any specific sort order given

我有和字符串数组:

var arrStr = ["Ron", "Jhon", "Mary", "Alex", "Ben"];

上面的数组是我需要的默认排序顺序。 我还有另一个字符串数组:

var arrStr2 = ["Mary", "Alex", "Jhon"];

我想排序arrStr2与排序顺序arrStr (也可以更改arrStr的顺序,因此arrStr2进行排序)。 arrStr2也可以有更多值,但是这些值只能来自数组arrStr任何值

排序后,我需要arrStr2["Jhon","Mary","Alex"];

如何使用jQuery实现此目的?

排序后,我需要arrStr2的输出为[“ Jhon”,“ Mary”,“ Alex”];

只需尝试这个

arrStr2.sort(function(a,b){ return arrStr.indexOf(a) - arrStr.indexOf(b) });

现在arrStr2将具有您期望的值,

演示

 var arrStr = ["Ron", "Jhon", "Mary", "Alex", "Ben"]; var arrStr2 = ["Mary", "Alex", "Jhon"]; arrStr2.sort(function(a,b){ return arrStr.indexOf(a) - arrStr.indexOf(b) }); document.body.innerHTML = JSON.stringify( arrStr2, 0, 4 ); 

只需计算交集,无需sort()

 var arrStr = ["Ron", "Jhon", "Mary", "Alex", "Ben"]; var arrStr2 = ["Mary", "Alex", "Jhon"]; result = arrStr.filter(x => arrStr2.includes(x)) document.write('<pre>'+JSON.stringify(result,0,3)); 

(ES5向后移植为练习)。

这是另一种方法:

var rank = {};
arrStr.forEach(function(e, i){rank[e] = i;});
arrStr2.sort(function(a, b) {return rank[a] - rank[b];});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM