【问题标题】:Difference between create array using new Array() and new Object in Javascript [duplicate]在Javascript中使用new Array()和new Object创建数组之间的区别[重复]
【发布时间】:2021-02-08 18:52:50
【问题描述】:

我看到了使用创建数组的示例

var array = new Array(5);

但我也看到类似的东西

arrayObj[0] = "index zero";
arrayObj[10] = "index ten";

我认为上面的代码创建了一个具有两个字段名称 0 和 10 的对象,如下所示?对吗?

arrayobj {
0: "index zero"
10: "index ten"
}

这两种使用 new Array() 和 new Object 创建数组的方式有什么不同?

【问题讨论】:

  • 测试一下:var arrayObj = []; arrayObj[0] = "index zero"; arrayObj[10] = "index ten"; console.log(arrayObj) / var arrayObj = {}; arrayObj[0] = "index zero"; arrayObj[10] = "index ten"; console.log(arrayObj)
  • new Array(5); - 这将创建一个只有 length 属性且没有数组元素的稀疏数组。

标签: javascript


【解决方案1】:

ArrayObject 彼此不同。从技术上讲,您正在做的事情使数据结构和实用程序暂时保持不变,但是您错过了原型功能并且不能交叉使用它。

例如Array.forEach() 将在数组上循环,但不会在键/值对与数组的索引/项等效的对象上循环

var array = new Array(5).fill('index');

arrayObj = {};
arrayObj[0] = "index zero";
arrayObj[10] = "index ten";
try {
  console.log(array.length);
  array.forEach(i => console.log(i));
  
  

  console.log(arrayObj.length);
  arrayObj.forEach(i => console.log(i));
  } catch (e) { console.error(e); }
  
  //looping over Object
  
  Object.keys(arrayObj).forEach((item)=>{ 
     console.log(arrayObj[item]);
  });

【讨论】:

  • 在 "for (field in arrayobj)" 旁边,我可以使用 for (var i=0; istackoverflow.com/questions/1345939/…。提到一些获取对象大小的方法
  • 你可以使用Object.keys(arrayObj).length获取长度,但是直接使用arrayObj.length会返回undefined
  • 因此,for (var i=0; i
  • @SamLi 是的,请检查更新后的 sn-p 以了解如何循环对象
  • @SamLi 如果解决了您的问题,也请接受答案,谢谢
猜你喜欢
  • 2012-12-12
  • 2012-03-10
  • 2019-10-04
  • 1970-01-01
  • 2014-02-10
  • 1970-01-01
  • 2016-10-04
  • 2015-07-01
  • 1970-01-01
相关资源
最近更新 更多