如何在JavaScript中比较2个数字和1个以上的小数?

时间:2019-06-02 15:11:03

标签: if-statement version-control conditional-statements decimal-point

我正在尝试比较范围从1.0到1.10.11的版本号,它们的范围从1.2到1.3.35,并且我想编写一个if语句,它可以将push()的值设置在1.0-1.0之间.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 :(得分:0)

这是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

答案 1 :(得分:0)

感谢您的帮助。我最终使用了像这样的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