gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:26:09 25 4
gpt4 key购买 nike

默认情况下,数组在 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/

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