Tìm kiếm trang web

javascript - Tạo mảng 1 chiều từ các đối tượng con của mảng 2 chiều sử dụng [filter, map, some, reduce, v.v.]


Tôi có một đối tượng như bên dưới:

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

làm thế nào tôi có thể tạo một mảng gồm tất cả các đối tượng sản phẩm o1, o2 ... sử dụng lập trình hàm (filter, map, some, reduce, v.v.)?

đầu ra nên là:

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

Câu trả lời #1

Bạn có thể sử dụng kết hợp concat với map cho mục đích này:

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);

Câu trả lời số 2

Sử dụng Array#reduce, Array#push, giải cấu trúc và cú pháp spread:

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);