根据不同长度的另一个数组中的值对数组进行排序
Sort an array based on values from another array of different length
我浏览了几篇有类似问题的帖子,但找不到一篇能解决我的问题的。其他的似乎都在使用另一个相同大小或按值的数组进行排序。
我有两个阵列,看起来像这样:
var allCategories = ['Campus', 'Building', 'Floor', 'Room', 'Lecture Theatre', 'Lab'];
var currentCategories = ['Room', 'Lab', 'Campus'];
如何对currentCategories
进行排序,使其顺序与allCategories
的顺序匹配?
所需输出:
currentCategories --> ['Campus', 'Room', 'Lab'];
"根据数组中元素的索引对该数组进行排序":
currentCategories.sort(function(a, b) {
return allCategories.indexOf(a) - allCategories.indexOf(b);
});
// => ["Campus", "Room", "Lab"]
如果您只需要allCategories
的顺序和currentCategories
的成员,您可以执行以下操作。
allCategories.filter(function(x){return currentCategories.indexOf(x) != -1})
这假设您将每个array
视为一组不重复的元素。如注释中所述,此方法可能会从最终值中删除重复元素,或者不按照您可能想要的方式对重复元素进行排序。
Array.Sort
方法可以提供自定义函数。你可以这样做:
currentCategories.sort(function(a, b) {
var i = allCategories.indexOf(a),
j = allCategories.indexOf(b);
return i - j;
});
我还没有检查currentCategories
中存在不在allCategories
中的值时的行为。但是,如果是这样的话,它就不会名副其实了。
如果这是一种常见的情况,你可以按照以下几条线来概括它:
function sortByList(list) {
return function (a, b) { return list.indexOf(a) - list.indexOf(b); };
}
这样称呼它:
currentCategories.sort(sortByList(allCategories));
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- Javascript中的多维数组排序索引问题
- 如何按日期对Javascript对象数组排序
- 数组排序后显示更改
- 当许多元素相等时,Javascript数组排序无法正常工作
- Javascript数组排序速度受字符串长度的影响
- 按唯一键将对象数组排序为数组
- 以 js 为单位的数组排序
- js 数组排序无法正常工作
- 数组排序.论点从何而来
- 不需要的数组排序
- 数组排序不正确/不可预测,使用 indexOf 时
- Javascript将数组排序到树中
- 随后的多维数组排序会产生意外的结果
- 数组排序基于纯javascript搜索文本匹配
- Javascript自定义数组按数组排序
- 使用字符串按属性错误对对象进行数组排序
- 多维数组排序
- JavaScript与PHP在数组排序中的对比
- Javascript-关联数组排序