我有和字符串数组:
var arrStr = ["Ron", "Jhon", "Mary", "Alex", "Ben"];
上面的数组是我需要的默认排序顺序。我有另一个字符串数组:
var arrStr2 = ["Mary", "Alex", "Jhon"];
我想使用arrStr2
中的排序顺序对arrStr
进行排序。 (arrStr
中的顺序也可以更改,因此arrStr2
应该排序)。 arrStr2
也可以包含更多值,但值只能来自数组arrStr
中的任何值
排序后我需要arrStr2
作为["Jhon","Mary","Alex"];
如何使用jQuery实现这一目标?
答案 0 :(得分:1)
排序后我需要输出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 );
&#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];});