将嵌套对象转换为单个数组值

时间:2016-11-14 07:15:30

标签: reactjs ecmascript-6 lodash

我有一些json数据,如下所示:

{ 
'harry-test-com': { 'quoteID234324': {'day': 'tuesday', 'cost':'1000'}},
'sam-imaginarydomain-com': {
'quoteID13211': {'day': 'wednesday', 'cost': '500'},
'quoteID534534': {'day': 'monday', 'cost': '300'}
 }
};

所以基本上我们的报价是由用户安排的,以便于过滤。但是,在一个页面上,我想在列表中显示所有引号。所以我想浏览每个用户,抓住他们的引号,然后将它们添加到按键排序的对象中,如下所示:

'quoteID234324': {'day': 'tuesday', 'cost':'1000'}, 
'quoteID13211': {'day': 'wednesday', 'cost': '500'},
'quoteID534534': {'day': 'monday', 'cost': '300'}

我认为lodash无疑对此有用,但我不知道从哪里开始?任何帮助将不胜感激!干杯

1 个答案:

答案 0 :(得分:1)

您可以使用Object.keys()Object.assign()

将对象缩减为新对象



const obj = {
  'harry-test-com': {
    'quoteID234324': {
      'day': 'tuesday',
      'cost': '1000'
    }
  },
  'sam-imaginarydomain-com': {
    'quoteID13211': {
      'day': 'wednesday',
      'cost': '500'
    },
    'quoteID534534': {
      'day': 'monday',
      'cost': '300'
    }
  }
};

const result = Object.keys(obj).reduce((days, user) => Object.assign(days, obj[user]), {});

console.log(result);




支持率较低的选项是将Object.values()Object.assign一起使用:



const obj = {
  'harry-test-com': {
    'quoteID234324': {
      'day': 'tuesday',
      'cost': '1000'
    }
  },
  'sam-imaginarydomain-com': {
    'quoteID13211': {
      'day': 'wednesday',
      'cost': '500'
    },
    'quoteID534534': {
      'day': 'monday',
      'cost': '300'
    }
  }
};

const result = Object.assign({}, ...Object.values(obj));

console.log(result);