Это рабочее решение Java. Если у вас есть какие-либо предложения по коду, сообщите мне о моем Gist .
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class FB {
public static int comparator(String s1, String s2) {
String[] pt1 = s1.split("((?<=[a-z])(?=[0-9]))|((?<=[0-9])(?=[a-z]))");
String[] pt2 = s2.split("((?<=[a-z])(?=[0-9]))|((?<=[0-9])(?=[a-z]))");
//pt1 and pt2 arrays will have the string split in alphabets and numbers
int i=0;
if(Arrays.equals(pt1, pt2))
return 0;
else{
for(i=0;i0)
return 1;
else
return -1;
}
else {
int nu1 = Integer.parseInt(pt1[i]);
int nu2 = Integer.parseInt(pt2[i]);
if(nu1>nu2)
return 1;
else
return -1;
}
}
}
if(pt1.length>i)
return 1;
else
return -1;
}
private static Boolean isNumber(String n1, String n2) {
// TODO Auto-generated method stub
try {
int nu1 = Integer.parseInt(n1);
int nu2 = Integer.parseInt(n2);
return true;
}
catch(Exception x) {
return false;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] examples = {"1some", "2some", "20some", "21some", "3some", "some", "1abc", "abc"};
List values = new ArrayList(Arrays.asList(examples));
System.out.println(values);
Comparator com = (o1,o2) -> {return comparator(o1,o2);}; //lambda expression
Collections.sort(values,com);
System.out.println(values);
}
}
Вывод:
[1some, 2some, 20some, 21some, 3some, some, 1abc, abc]
[1abc, 1some, 2some, 3some, 20some, 21some, abc, some]
Вы можете использовать цикл for
для итерации массива значений параметров и добавления их к выпадающему списку так:
//Example array of values for adding to drop down
const myArray = [ "Dog", "Cat", "Bird" ];
//Iterate your array of values
for(let x = 0; x < myArray.length; x++){
let z = document.createElement("option");
z.setAttribute("value", myArray[x]); //Add value of the current item from array
let t = document.createTextNode(myArray[x]); //Add text of the current item from array
z.appendChild(t);
document.getElementById("mySelect").appendChild(z);
}
<p>Click the button to create a SELECT and an OPTION element.</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction() {
var ele = document.createElement("SELECT");
ele.setAttribute("id", "mySelect");
document.body.appendChild(ele);
var values=["option0","option1","option2","option3"];
// foreach the values array
for(i in values){
// i is the index of values;
// create option item
var item = document.createElement("option");
item.setAttribute("value", values[i]);
item.innerText=values[i];
ele.appendChild(item);
}
}
</script>
В примере используются имена переменных с одной буквой, если бы они использовали более значимые (например, newOption
вместо z
), вы бы, вероятно, сработали - просто повторите этот бит кода, который генерирует только новый возможно, внутри цикла.
function createSelect() {
var select = document.createElement("SELECT");
select.setAttribute("id", "mySelect");
document.body.appendChild(select);
var items = ["Foo","Bar","Zoo"];
for(var i = 0;i<items.length;i++) {
var item = items[i];
var newOption = document.createElement("option");
newOption.setAttribute("value", item);
var textNode = document.createTextNode(item);
newOption.appendChild(textNode);
select.appendChild(newOption);
}
}
<p>Click the button to create a SELECT and an OPTION element.</p>
<button onclick="createSelect()">Try it</button>
Совет - используйте mdn вместо w3schools , лучшую документацию и примеры.
Я предпочитаю этот подход, он чище для меня ^^
function createSelect() {
var select = document.createElement("select");
document.body.appendChild(select);
var items = ["pizza","margherita","buona"];
items.forEach(function(item) {
var option = document.createElement("option");
option.text = item;
select.add(option);
});
}
<button onclick="createSelect()">CREATE SELECT</button>
forEach
во много раз медленнее, чем петля ванили for
.
– Jamiec
13 July 2018 в 15:30