关于空对象的 JavaScript 长度

标签 javascript

<p style="line-height: 18px; font-size: 18px;  font-family: times;">
Click "<i>Load samples</i>" to view and edit more JS samples.<br>
<br>
Labyrinth generated with JavaScript:<br><br>
<script>
var n = 100;
var sample = [];
for (var i = 0; i < n; i++)
    sample.push({});
console.log(sample.length);
var map = {};
map[5] = 3;
console.log(map.length);
</script>
</p>

大家好:

我是 JavaScript 新手,对 C(C++) 更加熟悉。

我测试了上面的代码,无法弄清楚 map 的含义。

  1. 如果我声明有什么区别:

    A. map = [];
    B. map = {};
    

    方式 A 似乎是一个空数组,但 B 是一个空对象。

  2. 为什么可以设置为数组的方式? (通过[]运算符,例如map[5] = 3)。

  3. 为什么 map 的长度未定义

  4. 我可以将map视为JavaScript的哈希表吗?

谢谢。

最佳答案

数组是一组数据,由连续的索引数据标识。然而,对象是完全不同的。他们有多个键值对。因此,数组仅由它们的索引决定。对象仅由它们的键决定。

var map = [];
map [5] = 5;
console.log(map.length);

上面给出 6 作为长度,因为 05 的连续值未定义。

另一方面,对象有键。因此,要找到对象的长度,我们需要使用Object.keys函数,它将获取数组中的所有键。

var map = {};
map[5] = 5;
console.log(Object.keys(map));
console.log(Object.keys(map).length);

此处 key 的类型,5将存储为“5”(字符串格式)。与数组不同的是,对象没有未定义值。他们只存储 key 。 :)

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

相关文章:

javascript - 获取 Node.js 中类的可用函数列表

Javascript,将div颜色设置为另一个div颜色

javascript 基础 - 时间死区,提升或关闭

javascript - JQuery 悬停函数超时

javascript - 使用 javascript 切换禁用属性

javascript - 用于匹配有限深度嵌套字符串的正则表达式——缓慢、崩溃的行为

javascript - 当用户在下拉列表中选择 "Other"时如何获取输入字段

javascript - 对具有单独延迟的元素数组进行迭代

javascript - Vue.js 和 Rails 的数据库保存问题

javascript - 未启用 tinyScroll