我在排序包含未定義元素(稀疏數組)的數組時遇到問題。當然,這在Safari和Firefox中很有用,我還沒有嘗試過其他版本的IE,但這裏有一個簡單的例子。如何在IE7中使用未定義元素對數組進行排序JavaScript
<html>
<head>
<script type="text/javascript">
function runscript() {
var myArray = [{id: 2},
undefined,
{id: 0},
{id: 1},
{id: 3},
{id: 4},
{id: 5}];
myArray.sort(function compare(a, b) { return a.id - b.id; });
var output = '';
for (loop in myArray) {
output += myArray[loop].id + ' ';
}
alert(output);
}
</script>
</head>
<body onLoad="runscript();">
</body>
警報()結尾莫名其妙地表示0 2 3 4 5 1從陣列正確排序,以及警報顯示0 1 2 3 4 5
是卸下未定義元件有一種在IE7中解決這個問題的方法,以便我可以可靠地對包含未定義元素的數組進行排序?只要所定義的元素排序正確,我不關心未定義的元素在哪裏結束。
我假設對於(在myArray中的循環)將尊重排序後的自然數組排序,事實上它似乎在Safari,Firefox甚至IE7(但只有當沒有未定義的值數組)。如果我按照David的建議做了索引循環,它可以在所有瀏覽器中使用。太糟糕了,我剛開始習慣更緊湊的循環語法。謝謝你的幫助。 – 2010-05-21 20:15:30