Создайте 1d массив из подобъектов 2d массива, используя [фильтр, карту, некоторые, уменьшить и т. Д.] - PullRequest
0 голосов
/ 21 января 2019

У меня есть объект, как показано ниже:

Response{
  result:[{products:[o1,o2,o3]},{products:[o5,o7,o8]},{products:[o11,o12,o13]}]
}

как я могу создать массив всех объектов продукта o1, o2 ..., используя функциональное программирование (фильтр, отображение, некоторые, уменьшение и т. Д.)?

вывод должен быть:

outArray = [o1,o2,o3,o5,o7,o8,o11,o12,o13]

Ответы [ 5 ]

0 голосов
/ 26 марта 2019

Использовать Array.prototype.flatMap.

const data = [{products: ['o1','o2','o3']}, {products: ['o5','o7','o8']}, {products: ['o11','o12','o13']}];
console.log(data.flatMap(p => p.products));
0 голосов
/ 21 января 2019

Немного менее многословная альтернатива, в которой все еще используются map и оператор spread.

const init = [
  {products: [1, 2, 3]},
  {products: [5, 7, 8]},
  {products: [11, 12, 13]}
];

const result = [].concat(...init.map(x => x.products));
console.log(result);
0 голосов
/ 21 января 2019

Использование Массив # уменьшение , Массив # push , деструктурирование и синтаксис распространения :

const data = {result:[{products:['a','b','c']},{products:['a','b','c']},{products:['a','b','c']}]}
const res = data.result.reduce((a, {products}) => {
  a.push(...products);
  return a;
}, [])

console.log(res);
0 голосов
/ 21 января 2019

Вы можете использовать карту и объединиться, чтобы получить желаемый результат

let result =[{products:['o1','o2','o3']},{products:['o5','o7','o8']},{products:['o11','o12','o13']}];
let data = [result.map(function(o){ return o.products})].join(',').split(',');
console.log(data);
0 голосов
/ 21 января 2019

Вы можете использовать комбайн concat с map для этой цели:

const products = [{products:[1,2,3]},{products:[5,7,8]},{products:[11,12,13]}];
const result = Array.prototype.concat.apply([], products.map(item => item.products));

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...