JavaScript 数组长度问题

标签 javascript arrays

<分区>

我对以下内容有点迷茫:

当我执行两个不同数组的 console.log 时,一个给我实际长度,但另一个没有。

第一个数组的输出,长度合适:

[Object, Object, Object]
  0: Object
  1: Object
  2: Object
  length: 3
  __proto__: Array[0]

第二个的输出,长度应该是4但实际上是0:

[A: Object, B: Object, C: Object, D: Object]
  A: Object
  B: Object
  C: Object
  D: Object
  length: 0
  __proto__: Array[0]

为什么我的第一个数组的长度正确,但第二个数组的长度不正确?

编辑: 这是生成上述输出的代码:

var links = [
  {source: "A", target: "B"},
  {source: "A", target: "C"},
  {source: "A", target: "D"}
];

var nodes = [];

// Compute the distinct nodes from the links.
links.forEach(function(link) {
  link.source = nodes[link.source] || (nodes[link.source] = {name: link.source});
  link.target = nodes[link.target] || (nodes[link.target] = {name: link.target});
});

console.log(links);
console.log(nodes);

最佳答案

第二条日志消息无法输出数组的长度,因为值已分配给其属性而不是其索引,因为数组的实际索引中没有对象 length属性为 0。发生这种情况是因为数组不能包含非数字索引,例如 A、B、C、D。

所以当你执行时:

var arr= [];
arr["b"] = "test";

代码实际上是将字符串文字 test 分配给 arr 数组的 b 属性,而不是索引。这是可能的,因为数组是 Javascript 中的对象,因此它们也可能具有属性。

关于JavaScript 数组长度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24958960/

相关文章:

javascript - 我如何使用 Javascript 来查找具有随机名称的 cookie?

javascript - 第二次调用主干时,回调中丢失上下文

c - 如何返回一个 char 数组并在 main 中打印它?

php - 使用 unset() 删除 XML 中的节点; PHP/simplexml_load_file

javascript - TypeError : moment(. ..).tz 不是函数

javascript - Chrome Dev Tools - 通过页面重新加载记住选择的元素

javascript - 在 WEBHDFS REST Api 中启用跨域访问以供 JavaScript 使用?

linux - 如何将数组实现为 AWK 表达式?

javascript - 按第 5 个字段对多维数组进行排序

php - 获取数组中重复次数最多的值