【问题标题】:how to get all the values inside JSON with a common name?如何使用通用名称获取 JSON 中的所有值?
【发布时间】:2021-10-11 21:00:55
【问题描述】:

我需要从 JSON 结构中获取所有 name 值的数组。

我的 JSON 如下所示:

{
  "profile": {
    "G5j7": {
      "name": "siddharth",
      "age": "17"
    },
    "Loj9": {
      "name": "ram",
      "age": "20"
    },
    "Huy8": {
      "name": "maix"
    }
  }
}

我可以通过以下方式获得特定的name 值:

var singleName = profile.G5j7.name;

但是,如果不知道 profile 中的所有 ID,我如何获得所有 name 值的数组?我需要存储在一个变量中。

【问题讨论】:

  • 这是我 API 中的客户 ID,所以我想要 每个 ID 的名称

标签: javascript node.js arrays json reactjs


【解决方案1】:

你可以这样做:

const names = Object.values(profile).map((profile) => profile.name);

Object.values() 返回值的数组。 然后对于每个配置文件,使用.map() 获取每个name

【讨论】:

    【解决方案2】:

    let data = {
      "profile":
        { "G5j7": { "name": "siddharth", "age": "17" },
          "Loj9": { "name": "ram", "age": "20" },
          "Huy8": { "name": "maix" }
        }
    };
    
    
    
    for (const [key, value] of Object.entries(data.profile)) {
      console.log(`${value.name}`);
    }

    【讨论】:

      【解决方案3】:

      您可以使用Object.keys 获取对象中的所有属性键,这样您就可以访问所有配置文件对象键,您可以像下面这样检索每个键的名称

      let data = {
          "profile": {
              "G5j7": {
                  "name": "siddharth",
                  "age": "17"
              },
              "Loj9": {
                  "name": "ram",
                  "age": "20"
              },
              "Huy8": {
                  "name": "maix"
              }
        }
      };
      
      let profiles_keys = Object.keys(data.profile);
      
      let results = profiles_keys.reduce((accumulator, current)=> {
          return accumulator.concat(data.profile[current].name)
      }, []);
      
      console.log(results);

      【讨论】:

        【解决方案4】:

        您可以使用Object.getOwnPropertyNames。此函数从对象中获取字段名称到数组。

        let data = { "profile": { "G5j7": { "name": "siddharth", "age": "17" }, "Loj9": { "name": "ram", "age": "20" }, "Huy8": { "name": "maix" } } } 
        let propNames = Object.getOwnPropertyNames(data.profile)
        propNames.forEach((propname) => { console.log(data.profile[propname].name) })

        【讨论】:

          【解决方案5】:
          Object.values(yourObj.profile).map(v => v.name)
          

          Object.values() 返回对象的每个(自己的)道具上的值数组。所以你可以忘记属性名称并迭代它的值

          【讨论】:

            【解决方案6】:
            const arrayName = Object.values(profile).map((item) => item.name);
            

            【讨论】:

              【解决方案7】:
                  const decodedJsonObject = "  {         "profile": {     "G5j7": {       "name": "siddharth",       "age": "17"     },     "Loj9": {       "name": "ram",       "age": "20"     },     "Huy8": {       "name": "maix"     }        } }"
               var singleName = profile.G5j7.name;
              

              【讨论】:

              • 不,我想要一个数组中的所有名称而不指定 ID
              猜你喜欢
              • 1970-01-01
              • 2020-08-18
              • 2016-01-26
              • 2011-08-23
              • 1970-01-01
              • 2019-05-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多