javascript - 如何从 Map 对象中获取嵌套值?
问题描述
我没有使用对象文字语法来访问对象中的嵌套值,而是尝试使用 es6 Map 对象,它有一个方便的map.get()
方法。我试图避免对普通的 Javascript 对象执行以下操作。
// access deeply nested values...
obj['k1'] &&
obj['k1']['k2'] &&
obj['k1']['k2']['k3']
我是不是建错了地图?仅map.get('k1')
有效(无法获取嵌套的地图值,仅将 k1: 下的整个内容作为值给出)。
var obj = {'k1': {'k2': {'k3': 'Test Value'}}};
const map = new Map(Object.entries(obj));
console.log(map.get('k1'));
console.log(map.get('k2'));
console.log(map.get('k3'));
解决方案
您还需要迭代所有键和嵌套对象。
function add(object, map) {
Object.entries(object).forEach(([k, v]) => {
map.set(k, v);
if (v && typeof v === 'object') {
add(v, map);
}
});
}
var obj = { k1: { k2: { k3: 'Test Value' } } };
const map = new Map;
add(obj, map);
console.log(map.get('k1'));
console.log(map.get('k2'));
console.log(map.get('k3'));
推荐阅读
- mule - 在 mule 中将没有密钥的 Json 数组转换为 SOQL 格式
- oracle - 从 EXECUTE IMMEDIATE PLSQL 输出结果
- reactjs - D3.js + React - 在折线图中显示多个工具提示
- web-services - JEE 如何决定是使用 SOAP 1.1 还是 SOAP 1.2 来实现 SOAP 服务?
- android - Unity 中 PlayerPrefs 的问题?
- java - 正则表达式字符串中的两个相等字符
- checkbox - 填写复选标记时的时间戳脚本和公式
- haskell - 如何在`hedgehog`中使用`GenT`
- python - 如何在 python websocket 服务器握手响应中设置“Sec-WebSocket-Protocol”标头?
- python - Pymodbus 获取从机地址