【问题标题】:Maps are objects but what is the type of value inside the object地图是对象,但对象内部的值是什么类型
【发布时间】:2021-05-14 23:06:00
【问题描述】:

我最近在学习地图,当我尝试以下代码时:

let a = [
    [false, 1],
    ['1', 'str1'],
    [1, 'num1'],
    [true, 'bool1']
]

let map1 = new Map(a);

console.log(map1);

它输出我:

Map { false => 1, '1' => 'str1', 1 => 'num1', true => 'bool1' }

所以我可以看到它是一个对象(由于 {}),但是花括号内的值的类型是什么。我无法理解。所以请任何人告诉我值的类型是什么,我可以在不使用 get 方法的情况下从键中获取值。
顺便说一句,我是使用 node js 来执行代码的。

【问题讨论】:

    标签: javascript arrays javascript-objects


    【解决方案1】:

    您看到的输出是一个格式约定,用于在控制台中检查时如何显示地图。映射实际上并不将键和值保存为自己的属性 - 相反,键和值在内部保存,仅对 Map 实现的内部可用,它通过各种 Map 公开它们.values().keys().get() 等方法。

    我可以不使用 get 方法从键中获取值吗?

    我想你可以使用.entries() 将 Map 变成一个数组,然后在数组中查找匹配的键:

    let a = [
        [false, 1],
        ['1', 'str1'],
        [1, 'num1'],
        [true, 'bool1']
    ]
    
    let map1 = new Map(a);
    
    const entries = [...map1.entries()];
    
    const entry = entries.find(e => e[0] === 1);
    console.log(entry[1]);

    但这真的很奇怪。

    没有办法在地图上获取保存的值没有使用地图的内置方法之一 - 但没关系,因为你应该总是使用处理地图的内置方法。继续使用.get

    【讨论】:

    • 好的,现在我明白了,非常感谢你回答我很困惑的问题,但现在明白了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多