【问题标题】:How to parse unknown JSON objects in JavaScript如何在 JavaScript 中解析未知的 JSON 对象
【发布时间】:2021-04-03 12:04:42
【问题描述】:

我正在尝试弄清楚如何解析以下信息:

{
  'unknown-value': {
    name: 'AB',
    id: 'BLUE'
  },
  'unknown-value': {
    name: 'AC',
    id: 'PURPLE'
  }
}

想要解析它们然后创建一个像这样的值数组:

names = ['AB', 'AC']
ids = ['BLUE', 'PURPLE']

没有遇到过这样的事情,它不是一个对象数组,所以我有点不知道该怎么做。

【问题讨论】:

标签: javascript json parsing


【解决方案1】:
  • 您可以使用 forEach 遍历对象数组
  • 然后用Object.values()获取对象的
  • 在这种情况下,您可以对这些值使用 forEach 并将其推送到专用的数组名称或 ID 中。

   
const obj = [{
  'unknown-value': {
    name: 'AB',
    id: 'BLUE'
  },
  'unknown-value2': {
    name: 'AC',
    id: 'PURPLE'
  }
}]

let names = [];
let ids = [];

obj.forEach((x) => { 
Object.values(x).forEach((y)=>{
  names.push(y.name);
  ids.push(y.id);
 })
})

console.log(names);
console.log(ids);

【讨论】:

    【解决方案2】:

    const { names, ids, } = Object.values({
    
      'foo': {
        name: 'AB',
        id: 'BLUE',
      },
      'bar': {
        name: 'AC',
        id: 'PURPLE',
      }
    }).reduce((map, item) => {
    
      map.names.push(item.name)
      map.ids.push(item.id)
    
      return map;
    
    }, { names: [], ids: [] });
    
    console.log('names :', names);
    console.log('ids :', ids);
    .as-console-wrapper { min-height: 100%!important; top: 0; }

    【讨论】:

      【解决方案3】:

      尽可能简单,试试这个方法,你会找到想要的结果

      object = {
        'unknown-value': {
          name: 'AB',
          id: 'BLUE'
        },
        'unknown-value': {
          name: 'AC',
          id: 'PURPLE'
        }
      };
      
      names = [];
      ids = [];
      
      for (key in object) {
          names.push(object[key].name);
          ids.push(object[key].id);        
      }
      
      for (value of names) {
          console.log(value);
      }
      
      for (value of ids) {
          console.log(value);
      }
      

      【讨论】:

        【解决方案4】:

        您可能还需要那个未知密钥,所以 Object.entries 是您的朋友:

        const normalized = Object.entries(obj).map(([key, value]) => ({key, ...value}));
        

        现在规范化包含一个对象数组,每个对象都有一个包含键的新属性“key”。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多