gpt4 book ai didi

javascript - 如何在 IE7 JavaScript 中对具有未定义元素的数组进行排序

转载 作者:行者123 更新时间:2023-12-02 20:38:17 25 4
gpt4 key购买 nike

我在 IE7 中对包含未定义元素(稀疏数组)的数组进行排序时遇到问题。当然,这在 Safari 和 Firefox 中效果很好,我还没有尝试过其他版本的 IE,但这里有一个简单的例子。

<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>

最后的alert()莫名其妙地显示0 2 3 4 5 1。从数组中删除未定义的元素可以对其进行正确排序,并且警报显示0 1 2 3 4 5。

有没有办法在 IE7 中解决这个问题,以便我可以可靠地对包含未定义元素的数组进行排序?只要定义的元素排序正确,我不在乎未定义的元素最终出现在哪里。

最佳答案

尝试更改for (loop in myArray)for (var loop=0; loop<myArray.length; loop++) :

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 (var loop=0; loop<myArray.length; loop++) {
output += (myArray[loop]||{id: 'undefined'}).id + ' ';
}
alert(output);
}
runscript()

当使用for (x in object)时不保证元素完好无损。另请参阅Why is using "for...in" with array iteration a bad idea?

(上述警报 0 1 2 3 4 5 undefined )

编辑:未删除 - 我已经测试了上面的内容并且它有效:-P

关于javascript - 如何在 IE7 JavaScript 中对具有未定义元素的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2880221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com