基于另一个数组对 JavaScript 数组进行排序
在 JavaScript 中,对数组进行排序是一种常见操作。但是,在某些情况下,您可能希望根据另一个数组对一个数组进行排序。这可能具有挑战性,特别是当您没有唯一标识符来链接元素时。
问题陈述:
想象您有两个数组:
itemsArray: 对的数组 [name, groupName],例如:
[ ['Anne', 'a'], ['Bob', 'b'], ['Henry', 'b'], ['Andrew', 'd'], ['Jason', 'c'], ['Thomas', 'b'] ]
sortingArr: 组名称的排序数组,例如:
['b', 'c', 'b', 'b', 'a', 'd']
任务是重新排列 itemsArray 以匹配 sortingArr 的排列。这意味着属于同一组的项目应该是相邻的,并且按照 sortingArr 中的顺序排序。
解决方案:
为了解决这个问题,我们可以使用排序函数根据 sortingArr 中组的索引来比较元素:
itemsArray.sort(function(a, b){ return sortingArr.indexOf(a) - sortingArr.indexOf(b); });
此函数计算索引之间的差异sortingArr 中的元素的数量。正差值表示元素 a 应放置在元素 b 之后,而负差值表示相反。
单行解决方案:
或者,您可以编写排序函数使用箭头语法,结果更加简洁解决方案:
itemsArray.sort((a, b) => sortingArr.indexOf(a) - sortingArr.indexOf(b));
输出:
排序后,itemsArray 将如下所示:
[ ['Bob', 'b'], ['Jason', 'c'], ['Henry', 'b'], ['Thomas', 'b'], ['Anne', 'a'], ['Andrew', 'd'], ]
如您所见, itemsArray 中的元素已重新排列和排序以匹配 sortingArr 中的顺序。
以上是如何根据另一个数组的顺序对 JavaScript 数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!