【前端js】根据一个数组的排序去给另一个数组排序

例如现在有数组

groupTypeList = [
   {
       id: "Producer",
   },
   {
       id: "Researcher",
   },
   {
       id: "Artist",
   },
   {
       id: "Integrator",
   },
   {
       id: "Practitioner",
   },
   {
       id: "Administrator",
   },
]

要根据这个数组的id顺序去给下面这个数组排序

types = [
    {
        "type": "Producer",
        "score": 53
    },
    {
        "type": "Researcher",
        "score": 48
    },
    {
        "type": "Artist",
        "score": 36
    },
    {
        "type": "Administrator",
        "score": 24
    },
    {
        "type": "Integrator",
        "score": 10
    },
    {
        "type": "Practitioner",
        "score": 10
    }
],

可以用下面这个方法

sortTypes: function(types){
     var _this = this;
     // 深拷贝types
     var copyTypes = JSON.parse(JSON.stringify(types));
     var sortedTypes = types.sort(function(a, b) {
         return _this.groupTypeList.findIndex(function(groupType) {
             return groupType.id === a.type;
         }) - _this.groupTypeList.findIndex(function(groupType) {
             return groupType.id === b.type;
         });
     });
     console.log(sortedTypes);
     return sortedTypes;
 },

解释:
Array.findIndex()
Array.findIndex()方法用于查找满足给定条件的数组中第一个元素的索引。它将回调函数作为参数,为数组中的每个元素执行该参数,直到满足条件为止。如果元素满足条件,回调函数应返回true,否则返回false。

在上面的方法里,Array.findIndex()用于查找与type.type属性匹配的groupType的索引。这是通过调用Array.findIndex()两次来完成的,对于Array.sort()方法中要比较的每个类型调用一次。然后使用两个索引之间的差异来确定类型数组的顺序。

总的来说,Array.findIndex()是一种有用的方法,用于查找满足给定条件的数组中元素的索引。它可以用于各种场景,例如根据特定属性对数组进行排序或查找特定元素的索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值