gpt4 book ai didi

关于空对象的javascript长度

转载 作者:行者123 更新时间:2023-11-29 17:53:31 26 4
gpt4 key购买 nike

<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"(字符串格式)。与数组不同,对象没有 undefined 值。他们只是存储 key 。 :)

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com