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

时间:2016-03-24 11:29:49

标签: javascript jquery

我有和字符串数组:

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

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

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

我想使用arrStr2中的排序顺序对arrStr进行排序。 (arrStr中的顺序也可以更改,因此arrStr2应该排序)。 arrStr2也可以包含更多值,但值只能来自数组arrStr中的任何值

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

的输出

如何使用jQuery实现这一目标?

3 个答案:

答案 0 :(得分:1)

  

排序后我需要输出arrStr2作为[" Jhon"," Mary"," Alex"];

只需尝试这个

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

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

<强>样本

&#13;
&#13;
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 );
&#13;
&#13;
&#13;

答案 1 :(得分:1)

只需计算交点,无需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向后移动作为练习)。

答案 2 :(得分:0)

这是另一种方法:

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