![](/img/trans.png)
[英]Javascript sort array - Calling a function inside compare function
[英]Javascript Array sort compare function weird ordering
所以我想知道我的代碼有什么問題,得到帶有compare參數的排序返回所有數字的正確順序,但是5.我感覺它與我如何取消數字12,4,94和1有關但我是一個完整的新手,我很困惑。 提前致謝!
<!DOCTYPE html>
<html>
<head>
<title>Array Manipulation:Sort</title>
<script type="text/javascript">
var parts = [];
parts.push("5", "42", "12");
var removed = parts.pop();
alert(removed);
function compare(value1, value2) {
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
parts.unshift(12, 4, 94, 1);
alert(parts.sort()); //1, 12, 4, 42, 5, 94
alert(parts.sort(compare)); //1, 4, 12, 42, 5, 94
</script>
</head>
</html>
改變這個
var parts = [];
parts.push("5", "42", "12");
至
var parts = [];
parts.push(5, 42, 12);
所以你可以比較數字和比較:
function compare(value1, value2) {
return value1 - value2;
}
將字符串與數字進行比較時,它會將兩者都轉換為數字,查找不同的第一個字符,然后根據該字符進行操作。
"5" > "42"
將字符串顯式轉換為數字以解決此問題。
function compare(value1, value2) {
value1 = +value1;
value2 = +value2;
我建議將所有值都視為數字並返回delta,並使用隱式類型轉換為數字。
function compare(value1, value2) {
return value1 - value2;
}
function compare(value1, value2) { return value1 - value2; } var data = [12, 4, 94, 1, "5", "42"]; data.sort(compare); console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.