首页 >web前端 >js教程 >如何根据另一个数组的顺序对 JavaScript 数组进行排序?

如何根据另一个数组的顺序对 JavaScript 数组进行排序?

Barbara Streisand
Barbara Streisand原创
2024-12-19 18:49:10699浏览

How to Sort a JavaScript Array Based on the Order of Another Array?

基于另一个数组对 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn