Как объединить несколько вложенных массивов, которые содержат одинаковые ключи объектов? - PullRequest
0 голосов
/ 07 сентября 2018

Может кто-нибудь помочь мне с этим, пожалуйста? Я потратил много времени, пытаясь понять это. У меня есть следующий формат:

[
  [{id:'1',venue:'foa',title:'t'},{id:'5',venue:'cs',title:'b'}, ...],
  [{id:'2',venue:'fob',title:'t'},{id:'6',venue:'cs',title:'b'}, ...],    
  [{id:'3',venue:'foc',title:'t'},{id:'7',venue:'cs',title:'b'}, ...],
  [{id:'4',venue:'fod',title:'t'},{id:'8',venue:'cs',title:'b'}, ...]
]

какой самый простой способ сделать это в этом формате (желательно ._underscore):

{id:'1',venue:'foa',title:'t'}
{id:'5',venue:'cs',title:'b'}
{id:'2',venue:'fob',title:'t'}
{id:'6',venue:'cs',title:'b'}
{id:'3',venue:'foc',title:'t'}
{id:'7',venue:'cs',title:'b'}
{id:'4',venue:'fod',title:'t'}
{id:'8',venue:'cs',title:'b'}

Ответы [ 3 ]

0 голосов
/ 07 сентября 2018

Я не уверен, что именно вы хотите, но вот что вы можете попробовать, используя Lodash:

var result = [];

var obj = [
  [{id:'1',venue:'foa',title:'t'},{id:'5',venue:'cs',title:'b'}],
  [{id:'2',venue:'fob',title:'t'},{id:'6',venue:'cs',title:'b'}],    
  [{id:'3',venue:'foc',title:'t'},{id:'7',venue:'cs',title:'b'}],
  [{id:'4',venue:'fod',title:'t'},{id:'8',venue:'cs',title:'b'}]
];

_.each(obj, function(i) {

  _.each(i, function(j) {
    result.push(j);
  });

});

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>
0 голосов
/ 07 сентября 2018

Вы можете использовать flatten().

var arr = [[{id:'1',venue:'foa',title:'t'},{id:'5',venue:'cs',title:'b'}],[{id:'2',venue:'fob',title:'t'},{id:'6',venue:'cs',title:'b'}],    [{id:'3',venue:'foc',title:'t'},{id:'7',venue:'cs',title:'b'}],[{id:'4',venue:'fod',title:'t'},{id:'8',venue:'cs',title:'b'}]],
    result = _.flatten(arr);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
0 голосов
/ 07 сентября 2018

Ваш вопрос недостаточно ясен, но если вы просто хотите сгладить массив, вы можете использовать следующий код:

var arr = [
  [{id:'1',venue:'foa',title:'t'},{id:'5',venue:'cs',title:'b'}],
  [{id:'2',venue:'fob',title:'t'},{id:'6',venue:'cs',title:'b'}],   
  [{id:'3',venue:'foc',title:'t'},{id:'7',venue:'cs',title:'b'}],
  [{id:'4',venue:'fod',title:'t'},{id:'8',venue:'cs',title:'b'}]
];

var res = [].concat(...arr);

console.log(res);
...