javascript - Javascript 中使用 new Array() 和 new Object 创建数组的区别
问题描述
我看到使用创建数组的示例
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 创建数组的方式有什么不同吗?
解决方案
Array
并且Object
彼此不同。从技术上讲,您正在做的事情使数据结构和实用程序暂时保持不变,但是您错过了原型功能并且无法使用它。
例如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]);
});
推荐阅读
- c# - 调用控制 - 复制文件阻塞另一个线程
- javafx - 在 Java 9 或 10 中创建 FXML 成员的正确方法是什么?
- javascript - Javascript PHP 中基于时间的代码执行
- kdb - kdb - 获取 n 天前的列值
- javascript - 页面加载时自动打开后无法关闭fancybox
- python - Django - 计算 created_at 和 done_at 之间的平均时间
- serialization - Ember 根据查询模型更改 normalizeResponse
- excel - 未来值 (FV) 如何从整个期间返回总和,而不仅仅是 Nper 值
- javascript - Chrome 内容和后台脚本可以共享对 blob: URL 的访问吗?
- javascript - js中的禁用按钮