javascript - Javascript 数组是稀疏的吗?

标签 javascript sparse-matrix

也就是说,如果我使用当前时间作为数组的索引:

array[Date.getTime()] = value;

解释器会实例化从0到现在的所有元素吗?不同的浏览器有不同的做法吗?

我记得 AIX 中曾经有一个错误内核,它会根据要求创建伪 ttys,但是如果你这样做了,比如说,“echo >/dev/pty10000000000”,它会创建/dev/pty0、/dev/pty1,.... 然后倒下死了。在贸易展上很有趣,但我不希望这种情况发生在我的客户身上。

最佳答案

是的,他们是。它们实际上是内部哈希表,因此您不仅可以使用大整数,还可以使用字符串、 float 或其他对象。所有键都通过 toString() 转换为字符串在被添加到哈希之前。您可以使用一些测试代码来确认这一点:

<script>
  var array = [];
  array[0] = "zero";
  array[new Date().getTime()] = "now";
  array[3.14] = "pi";

  for (var i in array) {
      alert("array["+i+"] = " + array[i] + ", typeof("+i+") == " + typeof(i));
  }
</script>

显示:

array[0] = zero, typeof(0) == string
array[1254503972355] = now, typeof(1254503972355) == string
array[3.14] = pi, typeof(3.14) == string

注意我是如何使用 for...in 的语法,它只为您提供实际定义的索引。如果使用更常见的 for (var i = 0; i < array.length; ++i)风格的迭代,那么你显然会遇到非标准数组索引的问题。

关于javascript - Javascript 数组是稀疏的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1510778/

相关文章:

c++ - RcppEigen 稀疏矩阵插入操作给出无效类 “dgCMatrix” 错误

algorithm - Congos TM1 中的稀疏合并算法

python - 更有效的解决方案?字典作为稀疏向量

javascript - Vue.js 基于子域加载 CSS

javascript - 将对象插入数组后,Array.length 读数为 0

javascript - Ionic 3 - 数据加载后 ngModel 未定义

Javascript 表单提交两次

javascript - 为什么 ECMAScript 5 中的 Object 没有 forEach 方法?

c++ - sparse_vector模板类:如何清理它?

matlab - matlab中反斜杠运算符的问题