我正在尝试比较范围从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);
}
}```
答案 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