Javascript 如何从动态密钥对值中获取数据

Javascript 如何从动态密钥对值中获取数据,javascript,json,angular,typescript,Javascript,Json,Angular,Typescript,这里我的问题是,我无法从动态json获取动态密钥对值 下面是我的json var d = { "pexels-photo.jpeg": { "information": "laptop", "desc": { "mimetype": "image/jpeg", "id": "shsj44", "file_id": "pexels-photo.jpeg" },

这里我的问题是,我无法从动态json获取动态密钥对值 下面是我的json

var d =   {
      "pexels-photo.jpeg": {
        "information": "laptop",
        "desc": {
          "mimetype": "image/jpeg",
          "id": "shsj44",
          "file_id": "pexels-photo.jpeg"
        },
        "_id": "shsj44"
      }
    }
我在下面试过了

Object.keys(d).forEach(function(key){
    var value = d[key];
     console.log(key + ':' + value) ;
});

我想获得id值“\u id”和“file\u id”值,这是因为
值之前有
+
,它将尝试连接该值,您将看到[object]

var d={
“pexels photo.jpeg”:{
“信息”:“笔记本电脑”,
“描述”:{
“mimetype”:“图像/jpeg”,
“id”:“shsj44”,
文件id:“pexels photo.jpeg”
},
_id:“shsj44”
}
}
Object.keys(d).forEach(函数(键){
设值=d[key];
log(键+':',值);
log(key+':',value.desc.id);

});这是因为
+
值之前有一个
+
,它将尝试连接该值,您将看到[object]

var d={
“pexels photo.jpeg”:{
“信息”:“笔记本电脑”,
“描述”:{
“mimetype”:“图像/jpeg”,
“id”:“shsj44”,
文件id:“pexels photo.jpeg”
},
_id:“shsj44”
}
}
Object.keys(d).forEach(函数(键){
设值=d[key];
log(键+':',值);
log(key+':',value.desc.id);
});您可以使用

var d={“dynamic”:{“information”:“laptop”,“desc”:{“mimetype”:“image/jpeg”,“id”:“shsj44”,“file_id”:“pexels photo.jpeg”},“_id”:“shsj44”}
设dynamicKey=Object.keys(d)[0]
设{[dynamicKey]:{desc:{
文件标识
},_id}}=d
console.log(文件\u id,'\n',\u id)
您可以使用

var d={“dynamic”:{“information”:“laptop”,“desc”:{“mimetype”:“image/jpeg”,“id”:“shsj44”,“file_id”:“pexels photo.jpeg”},“_id”:“shsj44”}
设dynamicKey=Object.keys(d)[0]
设{[dynamicKey]:{desc:{
文件标识
},_id}}=d

console.log(文件\u id,'\n',\u id)
您需要检查该值是否为object,如果是,则需要再次循环

以下代码将打印
d

export class AppComponent implements OnInit {
  d = {
    'pexels-photo.jpeg': {
      'information': 'laptop',
      'desc': {
        'mimetype': 'image/jpeg',
        'id': 'shsj44',
        'file_id': 'pexels-photo.jpeg'
      },
      '_id': 'shsj44'
    }
  };

  ngOnInit(): void {
    this.calc(this.d);
  }

  calc(val) {
    Object.keys(val).forEach(key => {
      const value = val[key];
      if (typeof (value) === 'object') {
        this.calc(value);
      } else {
        console.log(key + ':' + value);
      }
    });
  }

}

您需要检查该值是否为object,如果是,则需要再次循环该值

以下代码将打印
d

export class AppComponent implements OnInit {
  d = {
    'pexels-photo.jpeg': {
      'information': 'laptop',
      'desc': {
        'mimetype': 'image/jpeg',
        'id': 'shsj44',
        'file_id': 'pexels-photo.jpeg'
      },
      '_id': 'shsj44'
    }
  };

  ngOnInit(): void {
    this.calc(this.d);
  }

  calc(val) {
    Object.keys(val).forEach(key => {
      const value = val[key];
      if (typeof (value) === 'object') {
        this.calc(value);
      } else {
        console.log(key + ':' + value);
      }
    });
  }

}

试试这个:

var d={
“pexels photo.jpeg”:{
“信息”:“笔记本电脑”,
“描述”:{
“mimetype”:“图像/jpeg”,
“id”:“shsj44”,
文件id:“pexels photo.jpeg”
},
_id:“shsj44”
}
};
Object.keys(d).filter(key=>{
Object.key(d[key]).filter(项=>{
如果(项目=='desc'){
Object.key(d[key][item]).filter(elem=>{
if((elem=='id')| |(elem=='file_id')){
console.log(elem+':'+d[key][item][elem]);
}
});
}
})

});试试这个:

var d={
“pexels photo.jpeg”:{
“信息”:“笔记本电脑”,
“描述”:{
“mimetype”:“图像/jpeg”,
“id”:“shsj44”,
文件id:“pexels photo.jpeg”
},
_id:“shsj44”
}
};
Object.keys(d).filter(key=>{
Object.key(d[key]).filter(项=>{
如果(项目=='desc'){
Object.key(d[key][item]).filter(elem=>{
if((elem=='id')| |(elem=='file_id')){
console.log(elem+':'+d[key][item][elem]);
}
});
}
})

});这里的密钥名称将是动态的,每次“pexels photo.jpeg”都会更改。这里的密钥名称将是动态的,每次“pexels photo.jpeg”都会更改。我如何获取“\u id”和“file\u id”值?好的,假设我们不知道名称“desc”或任何其他名称是否可以存在,我如何获取“\u id”和“file\u id”值?好吧,假设我们不知道名称“desc”或任何其他名称是否存在