一个数组要按照特定的数组顺序模板进行排序

本文介绍了两种JavaScript函数,sortCommon1和sortCommon2,分别通过自定义比较函数和数组indexOf实现对sortArr按照standardArr中元素排序。适合理解和实践基于字段值的数组排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sortArr为要进行排序数组,standardArr为排序模板,sortField根据对象某个字段来排序
第一种方式
export function sortCommon1(sortArr, standardArr, sortField) {
  var compare = function (obj1, obj2) {
    var obj1Value, obj2Value;
    standardArr.forEach(function (v, k) {
      if (v == obj1[sortField]) {
        obj1Value = k;
      } else if (v == obj2[sortField]) {
        obj2Value = k;
      }
    });
    return obj1Value - obj2Value;
  };
  return sortArr.sort(compare);
}

    const sortArr = [
      { value: '3年' },
      { value: '1年' },
      { value: '2年' },
      { value: '1年' },
      { value: '3年' },
      { value: '3年' }
    ];
    const standardArr = ['1年', '2年', '3年'];
    console.log(sortCommon1(sortArr, standardArr, 'value'));

第二种方式 简洁版
export function sortCommon2(sortArr, standardArr, sortField) {
  sortArr.sort(function (a, b) {
		return standardArr.indexOf(a[sortField]) - standardArr.indexOf(b[sortField]);
	})
}

    const sortArr = [
      { value: '3年' },
      { value: '1年' },
      { value: '2年' },
      { value: '1年' },
      { value: '3年' },
      { value: '3年' }
    ];
    const standardArr = ['1年', '2年', '3年'];
    sortCommon2(sortArr, standardArr, 'value')
    console.log(sortArr);


输出结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值