自定义组数对像排序,保证相同数据排在最前面

    方法1:简单的组数对像排序

allArrSort (arrayData, item, mode) {
    if (this.isArray(arrayData)) {
      if (mode === 'DESC') {
        arrayData.sort((x, y) => y[item] - x[item]) // 倒序
      } else {
        arrayData.sort((x, y) => x[item] - y[item]) // 正序
      }
      // arrayData.map((currItem, index) => { // 自动排序
      //   currItem[item] = index + 1
      //   return currItem
      // })
      return arrayData || []
    }

 注:以上代码如有两个相同的seq,那就会排在后面

方法2:简单的组数对像排序

  arrayItemSort (arrayData, item) {
    function funSort (property) {
      return function (a, b) {
        let x = a[property]
        let y = b[property]
        return x - y
      }
    }
    return arrayData.sort(funSort(item))
  }

方法三:

    // 1.把选中插入1的数组---第二次插入时需做查重复处理
      // 2.数组1有的。。原数据都要删除生成2数据
      // 3.1和2数组排序
      // 4.合并两个数据
      // 5.重新排序

let  sortDataArr1=[]
let  sortDataArr2 = []
let  arrayData=[{seq:1,id:1},{seq:2,id:2},{seq:3,id:3},{seq:4,id:4}]
allArrSort (arrayData, name, obj) { // 自定义排序处理
      const arr1 = arrayData.find(item => item.id === obj.id)
      if (!sortDataArr1.length) {
        // console.log('第一次插入')
        sortDataArr1.unshift(arr1)
      } else {
        // console.log('第二次插入')
        sortDataArr1.filter((item, index, arr) => {
          if (item.id === obj.id) {
            arr.splice(index, 1) // 删除重复的数据
          }
        })
        sortDataArr1.unshift(arr1)
      }

      sortDataArr1.forEach(item => {
        arrayData.forEach((currItem, index, arr) => {
          if (currItem.id === item.id) {
            arr.splice(index, 1) // 删除重复的数据
          }
        })
      })
      sortDataArr2  = arrayData
      sortDataArr1.sort((x, y) => x[name] - y[name]) // 正序
      sortDataArr2.sort((x, y) => x[name] - y[name])
      const retData = [...sortDataArr1, ...sortDataArr2 ]
      retData.sort((x, y) => x[name] - y[name])
      retData.map((item, index) => {
        item[name] = index + 1
        return item
      })
      retrun retData
    }
allArrSort (arrayData, 'seq',{seq:5,id:5})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dogface07

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值