为了账号安全,请及时绑定邮箱和手机立即绑定

js判断对多个版本号进行排序怎么做?

js判断对多个版本号进行排序怎么做?

蛊毒传说 2019-03-08 14:15:36
1.例如现在存在一组版本号,['0.1.1', '2.3.3', '0.3002.1', '4.2', '4.3.5', '4.3.4.5'],怎么对这个版本号进行排序,实现最后排序的结果为['4.3.5','4.3.4.5','2.3.3','0.3002.1','0.1.1'];不知道各位大神有什么好的实现方法?
查看完整描述

3 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

var arr=['0.1.1', '2.3.3', '0.3002.1', '4.2', '4.3.5', '4.3.4.5'];

    arr.sort(function(a,b){

        return a>b?-1:1;

    });

    console.log(arr);


查看完整回答
反对 回复 2019-03-19
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

var arr = ['0.1.1', '2.3.3', '0.3002.1', '4.2', '4.3.5', '4.3.4.5']

arr.sort((a,b)=>{

    var items1 = a.split('.')

    var items2 = b.split('.')

    var k = 0

    for (let i in items1) {

      let a1 = items1[i]

      let b1 = items2[i]

      if (typeof a1 === undefined) {

        k = -1

        break

      } else if (typeof b1 === undefined) {

        k = 1

        break

      } else {

        if (a1 === b1) {

          continue

        }

        k = Number(a1) - Number(b1)

        break

      }

    }

    return k

})

console.log(arr)


查看完整回答
反对 回复 2019-03-19
?
茅侃侃

TA贡献1842条经验 获得超21个赞

// 使用的是选择排序

const versionSort = version => {

  const temp = version.map(v => v.split('.'));

  for (let i = 0; i < temp.length; i++) {

    let minIndex = i;

    for (let j = i; j < temp.length; j++) {

      for (let k = 0; k < temp[j].length; k++) {

        const current = +temp[j][k],

        min = +temp[minIndex][k];

        if (current < min) {

          minIndex = j;

        }

        // 只要不等,就立刻结束最内层遍历!

        if (current !== min) {

          break

        }

      }

    }

    [temp[i], temp[minIndex]] = [temp[minIndex], temp[i]];

  }

  return temp.map(v = > v.join('.'))

};


查看完整回答
反对 回复 2019-03-19
  • 3 回答
  • 0 关注
  • 1622 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信