3 javascript arrays sparse-matrix
我在Jscript中有一个稀疏数组,在负和正索引处都有非空元素.当我尝试使用for循环时,它不会从最低(负)索引到最高正索引遍历数组.相反,它按照我添加元素的顺序返回数组.枚举也不起作用.有什么方法可以让我这样做吗?
例
arrName = new Array();
arrName[-10] = "A";
arrName[20] = "B";
arrName[10] = "C";
Run Code Online (Sandbox Code Playgroud)
循环时,它应该给我A然后C B.
从技术上讲,"A"根本不在数组中,因为你没有负数索引.它只是arrName对象的成员.如果检查arrName.length,您将看到它是21(0,1,2,...,20)为什么不使用普通对象(作为哈希表).这样的事情应该有效:
<script type="text/javascript">
//define and initialize your object/hastable
var obj = {};
obj[20] = 'C';
obj[10] = 'B';
obj[-10] = 'A';
// get the indexes and sort them
var indexes = [];
for(var i in obj){
indexes.push(i);
}
indexes.sort(function(a,b){
return a-b;
});
// write the values to the page in index order (increasing)
for(var i=0,l=indexes.length; i<l; i++){
document.write(obj[indexes[i]] + ' ');
}
// Should print out as "A B C" to the page
</script>
Run Code Online (Sandbox Code Playgroud)