如何循环遍历嵌套对象中的特定键

How to loop through specific keys in nested object?

本文关键字:对象 嵌套 遍历 何循环 循环      更新时间:2023-09-26

我想从这个对象中提取特定部分(绝对不是全部):

var metadata = {
    cat: {
        id: 'id',
        name: 'kitty',
    },    
    dog: {
        id: 'id',
        name: 'spot',
        owner: {
            name: 'ralph',
        }
    }    
    //tons of other stuff
};

我想这样做:

var fields = ['cat.id', 'dog.name', 'dog.owner.name'];
fields.forEach( function(key) {
    console.log(metadata[key]); //obv doesn't work
});

这是一个简化的场景,我试图验证元数据中的特定字段。有什么直接的方法吗?

分割路径以提取单个键,然后使用reducer来解析值,然后映射结果:

var path = function(obj, key) {
  return key
    .split('.')
    .reduce(function(acc, k){return acc[k]}, obj)
}
var result = fields.map(path.bind(null, metadata))
//^ ['id', 'spot', 'ralph']

现在你可以注销他们如果你想:

result.forEach(console.log.bind(console))