如何在javascript中找到映射的大小
我想用javascript打印地图的大小。我使用了命令如何在javascript中找到映射的大小,javascript,Javascript,我想用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
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>
我可以看到输出:
0
0 1
0 1 2
0 1 2 3
请告诉我如何找到地图的大小,以及为什么上面的代码
mapp.size
不起作用。您将map
视为一个数组,并使用[]
访问它的键/值项。您需要使用Map
的实际方法。使用和,而不是[]
现在,您正在设置映射
的实际属性,这些属性与数据结构存储的实际可跟踪iterable k/v项不同
//不正确
常数m1=新映射();
m1[“foo”]=“bar”;
console.log(m1.长度);//未定义
console.log(m1.size);//0
//正确的
常数m2=新映射();
m2.设置(“foo”、“bar”);
控制台对数(m2.长度);//未定义
控制台日志(m2.大小);//1
您将映射
视为一个数组
。您应该使用map上的get
和set
方法来使用内置函数,而不是以数组方式[]。如果使用不正确,Javascript无法计算映射的大小
如果无法更改代码,则可以使用自己的函数来计算大小
function getMapSize(x) {
var len = 0;
for (var count in x) {
len++;
}
return len;
}
alert(getMapSize(mapp));
对海报代码的注释,正确的调用应类似于本教程中的示例: 取决于数据结构,对于类似数组的对象,我们可以通过以下方式获得贴图大小:
Object.getOwnPropertyNames(responseJson.result.priceMap).length;
请参阅
它适用于空映射以及带有值的映射
var list={};
console.log(Object.key(list.length))
结果=0
list={“key”:“hello”};
console.log(Object.key(list.length)) 贴图类型有一个特殊的原型来获取贴图对象的长度
const map1 = new Map();
map1.set('a', 'alpha');
map1.set('b', 'beta');
map1.set('g', 'gamma');
console.log(map1.size);
// expected output: 3
你的意思是
.length
?你不能用方括号[]
从地图中提取项目,你可以使用.get()
@swonder,是的,地图的长度或地图中键的总数。不,我的意思是用.length
代替.size()数组的。@Arya您希望它是什么?但是现在我在使用.get()
@Arya打印地图条目时遇到了麻烦。请添加任何相关信息,您可以对您的问题进行编辑。只有代码的答案通常被认为是低质量的。你能给你的答案加一个解释吗?欢迎来到SO!这个答案没有帮助;我认为你把地图和集合与普通物体混淆了。如果您阅读了链接的问题,您应该注意到,该问题说明此方法不适用于贴图和集。如果你阅读关于这个问题的其他答案,你会发现OP的实际问题是什么。我建议删除此答案。这里的主要问题是问题评论部分提到的@zero298的Map()
用法不正确:
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.getOwnPropertyNames(obj).length);
// logs 3
const map1 = new Map();
map1.set('a', 'alpha');
map1.set('b', 'beta');
map1.set('g', 'gamma');
console.log(map1.size);
// expected output: 3