首页 > 解决方案 > 如何从 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')); 

标签: javascriptecmascript-6

解决方案


您还需要迭代所有键和嵌套对象。

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')); 


推荐阅读