首页 > 解决方案 > 如何获取具有嵌套对象和数组的对象中每个属性的值?

问题描述

有没有一种方法可以遍历具有多个嵌套级别的对象和数组的对象并仅提取所有底层属性值?

在这个例子中,我希望它到 console.log: "Live JSON generator", 3.1, "2014-06-25T00:00:00.000Z", true 和更远的地方:"Jane Doe", "888-555-1212" , “伴侣”

let test = {
  "product": "Live JSON generator",
  "version": 3.1,
  "releaseDate": "2014-06-25T00:00:00.000Z",
  "demo": true,
  "person": {
    "id": 12345,
    "name": "John Doe",
    "phones": {
      "home": "800-123-4567",
      "mobile": "877-123-1234"
    },
    "email": [
      "jd@example.com",
      "jd@example.org"
    ],
    "dateOfBirth": "1980-01-02T00:00:00.000Z",
    "registered": true,
    "emergencyContacts": [
      {
        "name": "Jane Doe",
        "phone": "888-555-1212",
        "relationship": "spouse"
      },
      {
        "name": "Justin Doe",
        "phone": "877-123-1212",
        "relationship": "parent"
      }
    ]
  }
}

for(var key in test){
console.log(test[key]);
}

console.log(test);

标签: javascript

解决方案


JSON.parsereviverJSON.stringifyreplacer可以是检查所有值的简单方法:

var o = {"product":"Live JSON generator","version":3.1,"releaseDate":"2014-06-25T00:00:00.000Z","demo":true,"person":{"id":12345,"name":"John Doe","phones":{"home":"800-123-4567","mobile":"877-123-1234"},"email":["jd@example.com","jd@example.org"],"dateOfBirth":"1980-01-02T00:00:00.000Z","registered":true,"emergencyContacts":[{"name":"Jane Doe","phone":"888-555-1212","relationship":"spouse"},{"name":"Justin Doe","phone":"877-123-1212","relationship":"parent"}]}}

JSON.stringify(o, (k, v) => typeof v == 'object' ? v : console.log(k, ':', v))


推荐阅读