如何在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"];
我想用arrStr
中的排序顺序对arrStr2
进行排序。(arrStr
中的顺序也可以更改,因此应该对arrStr2
进行排序)。arrStr2
也可以有更多的值,但这些值将仅来自数组arrStr
中的任何值
排序后,我需要一个arrStr2
的输出作为["Jhon","Mary","Alex"];
如何使用jQuery实现这一点?
只需计算交集,无需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左后移作为练习)。
排序后,我需要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 );
这是另一种方法:
var rank = {};
arrStr.forEach(function(e, i){rank[e] = i;});
arrStr2.sort(function(a, b) {return rank[a] - rank[b];});
相关文章:
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 如何使用下划线根据自定义排序顺序对对象数组进行排序
- 如何根据不同排序顺序的多个值对json对象进行排序
- 如何使用Jquery Data表更正排序顺序
- 使用Async.js sortBy的升序与降序排序顺序
- 如何在Jquery中使用给定的任何特定排序顺序对字符串数组进行排序
- JavaScript 排序顺序错误
- 如何在 select2() 字段中保存排序顺序
- Jquery DataTable 组排序顺序
- 按可排序顺序获取所有文本区域内容
- 是否可以按当前排序顺序获取跨多个页面的所有 jqGrid 行
- 使用数组作为排序顺序
- 如何将其转换为排序顺序
- 打开 Graph API 排序顺序,或简单的 jQuery/JavaScript 排序
- 谷歌地图 API - 最近的点 - 更改排序顺序
- 如何保存排序顺序
- 反转角度中的排序顺序
- 迭代 JavaScript 集合并添加排序顺序
- 根据数字排序顺序更新自动重新排列HTML列表
- 在backbone.js中,如何使用新的模型数据更新视图,同时在没有完整渲染的情况下保持排序顺序