javascript - 默认情况下,JavaScript 中的数组真的是 "sparsed"吗?

标签 javascript arrays sparse-matrix

默认情况下,JavaScript 中的数组真的“稀疏”吗?

如何在不移动索引的情况下删除单个数组元素?

有什么区别:

var a = new Array(10);
var b = new Array(2);

这些数组在内存中占用的空间不同吗?我可以将 Array(2) 转换为 Array(10) 并返回吗?

更新1

以下代码

<body>
<script type="text/javascript">

    var a = new Array(10);
    var b = new Array(2);

    document.write('a[5] is ' + a[5] + '<br/>');
    document.write('a[15] is ' + a[15] + '<br/>');
    document.write('a.length is ' + a.length + '<br/>');
    document.write('b[5] is ' + b[5] + '<br/>');
    document.write('b[15] is ' + b[15] + '<br/>');
    document.write('b.length is ' + b.length + '<br/>');

    b[9]=12;
    delete b[9];

    document.write('After resize...<br/>');
    document.write('b[5] is ' + b[5] + '<br/>');
    document.write('b[15] is ' + b[15] + '<br/>');
    document.write('b.length is ' + b.length + '<br/>');

</script>
</body>

将返回

a[5] is undefined
a[15] is undefined
a.length is 10
b[5] is undefined
b[15] is undefined
b.length is 2
After resize...
b[5] is undefined
b[15] is undefined
b.length is 10

因此,我使 b 具有与 a 相同的属性。我可以在不为 b[9] 分配假值的情况下执行此操作吗?我可以反转,即让 a.length 为 2 吗?

最佳答案

  1. 是的,默认情况下数组是稀疏的。它们的属性甚至没有定义。您可以使用以下代码进行测试:

    var arr = new Array(10);
    for(var x in arr) {
        alert(x); // Never alerts a number
    }
    
  2. 要删除单个元素,请使用delete:

    delete arr[5]; // Deletes element 6.
    
  3. 内存可能无关紧要,不同的引擎会以不同的方式处理它。我认为这个问题无法准确回答。至于改变维度,JavaScript 数组没有固定的维度。这是完全合法的:

    var arr = new Array(2);
    arr[5] = "Hello!";
    

您可以在 http://developer.mozilla.com/ 上阅读有关 JavaScript 的更多信息。 。数组只是具有一些额外特殊属性的对象。它实际上没有索引,而是有键。

关于javascript - 默认情况下,JavaScript 中的数组真的是 "sparsed"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8626643/

相关文章:

javascript - Enyo 自定义属性

javascript - 过滤 Html 表的最有效方法?

javascript - 在 javaScript 中按字符串中的百分比对字符串数组进行排序的最佳方法是什么?

arrays - 不能将成员添加为同名成员存在

找到字符时切割字符串

javascript - {z}/{x}/{y} 在 "tiles": [location. origin+location.pathname +"countries/{z}/{x}/{y}.pbf"中是什么意思],

javascript - 类型 'Buffer' 不可分配给类型 'BlobPart'

database - 稀疏数据/数据存储/数据库是什么意思?

algorithm - 相关功能的数据结构建议

python - 将 python 稀疏矩阵导入 MATLAB