Niñ*_*001 5 javascript sorting
我正在尝试在 Javascript 中订购这个数组
arr = ["ax", "mof", "4", "63", "42", "3", "10", "[", "23", "adidas", "ba", ")", "ABC"];
Run Code Online (Sandbox Code Playgroud)
我希望数组显示如下:
["3", "4", "10", "23", "42", "63", "ABC", "adidas", "ax", "ba", "mof", ")", "["]
Run Code Online (Sandbox Code Playgroud)
也考虑符号 ")" , "[" 。
我想成为数组的顺序是:
我知道我必须使用sort(),但问题是我不能用符号对数组进行排序,我有这个问题
我正在使用该代码在 HTML 中显示数组和有序数组
var arr, text, larr, i;
arr = ["ax", "mof", "4", "63", "42", "3", "10", "[", "23", "adidas", "ba", ")", "ABC"];
larr = arr.length;
text = "<ul>";
for (i = 0; i < larr; i++) {
text += "<li>" + arr[i] + "</li>";
}
text += "</ul>";
document.getElementById("arrayin").innerHTML = text;
console.log(arr);
var arror,textor, larror, j;
arror = arr.sort();
larror = arror.length;
textor = "<ul>";
for (j = 0; j < larror; j++) {
textor += "<li>" + arror[j] + "</li>";
}
textor += "</ul>";
console.log(arror);
document.getElementById("Oarray").innerHTML = textor;
Run Code Online (Sandbox Code Playgroud)
我的最后一个问题是如何用数字、字母和符号对数组进行排序
正如您所猜测的,您确实必须使用排序方法并传入比较函数。为了获得您正在寻找的订单,以下检查将起作用。jsfiddle 的完整工作示例在这里 - https://jsfiddle.net/aczhyk8j/1/
function compare(a, b) {
// check for numberhood
const numA = !isNaN(a);
const numB = !isNaN(b);
if (numA && numB) {
return Number(a) - Number(b);
}
if (numA) return -1;
if (numB) return 1;
// check for wordhood
const wordA = /^[a-zA-Z]+$/.test(a);
const wordB = /^[a-zA-Z]+$/.test(b);
if (wordA && wordB) {
return a.localeCompare(b);
}
if (wordA) return -1;
if (wordB) return 1;
return 1; // or whatever logic to sort within non-alphanumeric values
}
// Now, use it in your sort method call.
let arr = ["ax", "mof", "4", "63", "42", "3", "10", "[", "23", "adidas", "ba", ")", "ABC"];
arr.sort(compare);
console.log(arr);Run Code Online (Sandbox Code Playgroud)