🌞

Ứng dụng hay của flatMap

Sửa bài viết này

Sử dụng flatMap có thể giúp code ngắn hơn, ví dụ trong tình huống bên dưới

// filter các giá trị âm
// nhân đôi các giá trị dương còn lại
[-3,-1,1,3,5]
	.filter(num => num >= 0)
	.map(num => num * 2)
// -> [2, 6, 10]

Cách này không có gì sai, nhưng nếu muốn viết bằng một phương pháp khác thì sao?

[-3,-1,1,3,5].flatMap(num => {
	if (num >= 0) {
		return [num * 2]
	}

	return []
})

// -> [2, 6, 10]

Nếu muốn rút ngắn hơn nữa

[-3, -1, 1, 3, 5]
  .flatMap((num) => (num >= 0 ? [num * 2] : []));
  
// -> [2, 6, 10]

Tuy nhiên, nếu xét về mặt viết-sao-cho-dễ-đọc thì có vẻ dùng filtermap sẽ tốt hơn, flatMap được cái viết ngắn hơn.

Túm lại, ưng mắt cách nào hơn thì bạn viết cách đó.