[英]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.