如何在javascript中查找地图大小

问题描述 投票:1回答:3

我想用javascript打印地图大小。我使用了命令map.size,但答案将是0,这是不正确的。

这是我的源代码:

<div id="demo" ></div>
<script>
    function add(test, key, value) {
        if (!test[key]) 
            test[key] = [value];
        else 
            test[key].push(value);
    }
    var mapp = new Map();
    var i,j,k=0;
    for (i=0;i<5;i++)
    {
      for (j=0;j<i;j++)
      add(mapp,i,j);
    }
    document.getElementById('demo').innerHTML="Map size are: "+ mapp.size;
</script>

输出:Map size are: 0

但是,当我打印地图条目时:

for (var m in mapp)
{
        for (k=0;k<mapp[m].length;k++)
        document.write(mapp[m][k]+"  ");

      document.write("<br>");
}

我可以看到输出:

0 
0 1 
0 1 2 
0 1 2 3 

[请告诉我如何查找地图的大小以及为什么上面的代码mapp.size无法正常工作。

javascript
3个回答
3
投票

您正在将Map视为Array。您应该在map上使用getset方法来使用内置函数,而不要以数组形式[]。如果未正确使用Javascript,则无法计算地图的大小

如果无法更改代码,则可以使用自己的函数来计算大小

function getMapSize(x) {
    var len = 0;
    for (var count in x) {
            len++;
    }

    return len;
}

alert(getMapSize(mapp));

3
投票

您将Map视为数组,并使用[]访问其键/值项。您需要使用Map的实际方法。代替[],使用.get().get()

现在,您正在设置.set()的实际属性,它与数据结构存储的实际跟踪的可迭代k / v项目不同。

.set()

0
投票
Map
© www.soinside.com 2019 - 2024. All rights reserved.