Как сравнить 2 числа с более чем одним десятичным знаком в JavaScript? - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь сравнить номера версий, которые варьируются от 1.0 до 1.10.11, они варьируются от 1.2 до 1.3.35, и я хотел бы написать оператор if, который мог бы выдвигать значения () в диапазоне от 1.0 до 1.00,99 тогда 1,2.т.е. мой код ниже:)

Я продолжаю пробовать разные вещи, но не уверен.Я попытался изменить число на строку, но я понимаю, что это не имеет смысла.Я полагаю, что должен быть более простой путь.(Кстати, я младший разработчик, поэтому любой совет будет полезен) Заранее спасибо.

function sortVersion() {
 let sVw = document.getElementsByClassName('triangle-td-software-version');
 for(let vN of sVw) {
  let versionNumber = vN.innerText;
    if(versionNumber == 1.0 || versionNumber < 1.09.99 ){
        v1_0.push(versionNumber)
        console.log('V1_0 =', v1_0);
      }else if(versionNumber == 1.1.0 || versionNumber <= 1.1.35){
            v1_1.push(versionNumber);
            console.log('V1_1 =', v1_1);
          } else if(versionNumber == 1.2 || versionNumber <= 1.2.2){
                v1_2.push(versionNumber);
                console.log('V1_2 =', v1_2);
              }else if(versionNumber == 1.3 || versionNumber <= 1.3.11){
                    v1_3.push(versionNumber);
                        console.log('V1_3 =', v1_3);
                  }else if(versionNumber == 1.4){
                        v1_4.push(versionNumber);
                            console.log('V1_4 =', v1_4);
                    }

 }```

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Спасибо за вашу помощь. В итоге я использовал такой метод str.split (). Но это указало мне в правильном направлении. Цените всех.

let v1_0 = [],
 v1_1 = [],
 v1_2 = [],
 v1_3 = [],
 v1_4 = [],
 v1_5 = [],
 v1_6 = [],
 v1_7 = [],
 v1_8 = [],
 v1_9 = [],
 v1_10 = [],
 v1_11 = [],
 v1_12 = [],
 what_are_you = [] ;

function sortVersion() {
 let sVw = document.getElementsByClassName('triangle-td-software-version');
 for(let vN of sVw) {
  let versionNumber = vN.innerText;
 if(versionNumber.split(".")[1] == 0){
      v1_0.push(versionNumber)

      }else if(versionNumber.split(".")[1] < 2 ){
          v1_1.push(versionNumber);
           console.log(v1_1.length)
          } else if(versionNumber.split(".")[1] < 3){
              v1_2.push(versionNumber);

              }else if(versionNumber.split(".")[1] < 4){
                  v1_3.push(versionNumber);

                  }else if(versionNumber.split(".")[1] < 5){
                      v1_4.push(versionNumber);

                      }else if(versionNumber.split(".")[1] < 6){
                          v1_5.push(versionNumber);

                          }else if(versionNumber.split(".")[1] < 7){
                              v1_6.push(versionNumber);

                              }else if(versionNumber.split(".")[1] < 8){
                                  v1_7.push(versionNumber);

                                  }else if(versionNumber.split(".")[1] < 9){
                                      v1_8.push(versionNumber);

                                      }else if(versionNumber.split(".")[1] < 10){
                                          v1_9.push(versionNumber);

                                          }else if(versionNumber.split(".")[1] < 11){
                                              v1_10.push(versionNumber);

                                              }else if(versionNumber.split(".")[1] > 10 || versionNumber.split(".")[1] < 0 || versionNumber.split(".")[1] == nil){
                                                  what_are_you.push(version);
                                                      console.log("Waht Are you!?!?", versionNumber);
                                                  }
                              }

            }//end of function
0 голосов
/ 02 июня 2019

Вот код в Swift, который должен работать. Должно быть легко перевести его на JavaScript (не очень знакомый мне).
Так как я не знал лучше и просто для удовольствия, я написал это рекурсивно, чтобы число подрывных действий было произвольным.

let versions = ["3.0", "1.0", "1.10.11", "3.1.5", "1.3.35", "1.2"]

// Convert your versions string to an array of versions, each represented by an array of ints. Store the version length
var versionLength = 0
var versionsInts: [[Int]] = []
for version in versions {
    let versionComponents = version.components(separatedBy: ".")
    if versionComponents.count > versionLength {
        versionLength = versionComponents.count
    }
    var versionInts: [Int] = []
    for versionComponent in versionComponents {
        versionInts.append(Int(versionComponent)!)
    }
    versionsInts.append(versionInts)
}

// Make each int array of the same length
for index in 0 ..< versionsInts.count {
    var versionInts = versionsInts[index]
    for _ in versionInts.count ..< versionLength {
        versionInts.append(0)
    }
    versionsInts[index] = versionInts
}

// Recursive helper function that compares 2 versions using a subindex
func cmp(version1: [Int], version2: [Int], subIndex: Int) -> Bool {
    if subIndex == version1.count { return true } // Both versions are the same, take any
    if version1[subIndex] < version2[subIndex] { return true } // ascending order
    if version1[subIndex] > version2[subIndex] { return false } // descending order
    return cmp(version1: version1, version2: version2, subIndex: subIndex+1) // If both versions up to now are the same, check next level
}

let sortedVersions = versionsInts.sorted(by: { (v1: [Int], v2: [Int]) -> Bool in
    return cmp(version1: v1, version2: v2, subIndex: 0) // recursively check versions
})      

Выход:

Printing description of sortedVersions:
▿ 6 elements
  ▿ 0 : 3 elements
    - 0 : 1
    - 1 : 0
    - 2 : 0
  ▿ 1 : 3 elements
    - 0 : 1
    - 1 : 2
    - 2 : 0
  ▿ 2 : 3 elements
    - 0 : 1
    - 1 : 3
    - 2 : 35
  ▿ 3 : 3 elements
    - 0 : 1
    - 1 : 10
    - 2 : 11
  ▿ 4 : 3 elements
    - 0 : 3
    - 1 : 0
    - 2 : 0
  ▿ 5 : 3 elements
    - 0 : 3
    - 1 : 1
    - 2 : 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...